Redo the models to allow showing different types of search results
- Adds a new AbstractListModel, which despite it's name is now used for a bunch of the GridViews
- This enables us to unify a bunch of duplicate roles everywhere, improving code clarity a bit
- A new SearchModel is created, which is separate from VideoListModel and it can cleanly show different types of results now (Channels, Playlists, and Videos)
- A bunch of code cleanup, so now there's a common grid item and a common grid view