Make Browse work asynchronously as well

The ground work was laid in the search PR, now let's start using it in Browse as well.
* Separate common model functionality into GenericModel (an implementation of GenericModel only needs to provide fetch_items() which should ensure on_reply() or on_error() is called), sub-class Search from GenericModel  
* Make GenericModel support a "static row" (useful for the ".." row in browse-view)
* Sub-class BrowseModel from GenericModel