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.
Same comment as the other constructor. If we want to ensure the ```SearchMemberGroup``` is created properly by all other callers with the correct name, then perhaps we can consider having a static helper method to create ```SearchMemberGroup``` object, and then make ```SearchMemberGroup``` constructor private:

```cs
class SearchMemberGroup
{
    internal static SearchMemberGroup CreateInstance(SearchElementBase node)
    {
        // Some correct logic in which member group name is determined.
        var name = ...;
        
        return new SearchMemberGroup(name);
    }

    private SearchMemberGroup(string name)
    {
    }
}
```