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.

If this PR will be accepted connected tests will be rewritten.

#### Reviewers

@aosyatnik, @Benglin, please, take a look.
Instead of creating a new collection, is there anything like ```rootCategory.RemoveAll(x => !x.Items.Any())```?