Implements searching

DesktopView#search defines a contains(string, substr) method that
returns true if string contains substr (case insensitive). It sets the
view's visibilityFilter observable to a function that returns
'contains(item.name(), string'

TODO: search does not split search string into terms, nor does it do
tag searching anymore.