CustomNode should be always added to AddonsTreeView - alternative implementation - DNM

#### Purpose

Remove `ElementType` parameters. Remove `if-else` which are needed to implement the task of https://github.com/Benglin/Dynamo/pull/130.

#### Modeifications

Created new class `CategoryBuilder`. To that class are moved functions connected with categories working.

In `SearchModel` created two instances of this class: 

1. `browserCategoriesBuilder` for `BrowserRootCategories` collection
2. `addonCategoriesBuilder` for `AddonRootCategories` collection.

As result of new class introducing we do not use `ElementType` for selection to which collection the node should be added. Correct collections is specified in constructor.

#### Additional references

This PR is alternative implementation of https://github.com/Benglin/Dynamo/pull/130.

Task: [MAGN-5156](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5156).

If this PR will be accepted connected tests will be rewritten.

#### Reviewers

@aosyatnik, @Benglin, please, take a look.
`ObservableCollection<>` doesn't have such function. If you like I can add something like
```C#
foreach(var element in rootCategories.Where(x => x.Items.Any()))
    rootCategories.Remove(element);
```