[Search] Refactor: separate generic model code from search

Create a new GenericModel class and put most of SearchModel code
there. Subclass SearchModel from GenericModel. Later we can use
GenericModel for BrowseModel as well, removing duplicate code.

No functional changes.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[Model] Name column indexes

This makes it easier to change the model without breaking things outside
the model.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[Model] stop fetching if all results have been fetched already

This will skip one useless search/browse call in some cases.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
[Browse] Use the GenericModel for Browse

This removes a lot of duplicate code and makes Browse perform as well
as Search.

Note that BrowseModels are discarded as soon as the view changes to
another "directory" (BrowseModel). Caching could be added later on.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>