grilo: Allow passing data to custom queries and search

Since searches overlap while the user types, we have to pass data to
queries to know if an item is for the currently running query.

Update callbacks to add the data argument.
view: Add Search view
view: Play songs in Search view when activated
query: Use functions for queries

This merges the queries for each view and search.
view: Use window in constructor arguments

Instead of passing the header bar and selection bar to the constructor,
just pass the window object and get the objects using it. This reduces
the number of arguments and gives us access to other window object
members.
toolbar: Rename states

Rename SINGLE and ALBUMS states to CHILD_VIEW and MAIN, respectively.
Add new state SEARCH_VIEW for viewing a result in search view, which is
like CHILD_VIEW except that the search button is not shown.
window: Track current and previous views

This will allow us to go back to the other views after closing the
search view. Connect to the notify signal before creating the views to
properly get the current view on startup.
view: Reshow previous view when search bar is hidden

If the current view is the search view showing all results, go back to
the previous view when the search bar is hidden.
view: Show album contents if an album is selected in Search view
widgets: Remove filtering in Albums view
searchbar: Hide dropdown when search bar is hidden
view: Implement add to playlist in search results

This is for albums and songs for now.