SearchRootCategories collection is introduced

#### Purpose

According to new design should be created new data structure for easy data binding process. `SearchRootCategories` should be populated on `LibrarySearchView`.

#### Modifications

Were created classes: `SearchCategory` and `SearchMemberGroup`. Binding of it to design is presented below.
![searchdesign](https://cloud.githubusercontent.com/assets/8158551/4480943/7119b5fe-499b-11e4-935b-868971b958f5.PNG)

Also was changed `SearchViewModel.SearchAndUpdateResults` function just to execute `Search` method which was rewritten a bit. For now the code is commented. There possibly we need it in future.

At UI level in `LibrarySearchView` we have new `ListView` to show found categories. Population content of each category is subject of next tasks and PRs.

#### Additional references

[MAGN-4803](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4803).
[MAGN-4804](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4804).
[MAGN-4805](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4805).

#### Reviewers

@aosyatnik, @Benglin, please take a look.
```SearchCategory``` takes ```SearchElementBase``` and ```AddMemberToCorrectGroup``` takes ```BrowserInternalElement```, why don't we make them take the same thing? Also, please keep the constructor to just setting ```Name``` and not adding the member, that's a job of ```AddMemberToCorrectGroup```, not here. The caller should be updated to do this:

```cs
var category = _searchRootCategories.FirstOrDefault(sc => sc.Name == splitCat[0]);
if (category == null)
{
    category = new SearchCategory(splitCat[0]);
    _searchRootCategories.Add(category);
}

category.AddMemberToCorrectGroup(node);
```