Re-add filtering

- add `filtering` property to each model
- add `filter` and `unfilter` functions to each model
- each `filter` call propagates to child models unless the model itself
  matches the pattern
- models fire 'filtered', 'unfiltered', and 'filterhit' events (the
  filterhit event occurs when the model itself matched the filter and
  not one of its children)
- library views listen to filtering events and change accordingly
- the `toggle` function in LibraryArtistView and LibraryAlbumView now
  accept a boolean argument to force toggling a certain way
- filtered models will not be added to the playlist on drop