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.
Let me try to propose something here: I think let's make ```browserCategoriesBuilder``` manage the ```_browserRootCategories``` completely (which means we should remove ```_browserRootCategories``` data member). The setter in the following property should be removed, and only get from ```browserCategoriesBuilder``` (if setter is needed, it should be set directly into ```browserCategoriesBuilder``` for management):

```cs
public ObservableCollection<BrowserRootElement> BrowserRootCategories
{
    get { return browserCategoriesBuilder.Collection; }
}
```

Do the same for ```addonCategoriesBuilder``` and ```_addonRootCategories```. I think that results in less redundancy (i.e. we only have one centralized place to keep ```_browserRootCategories``` -- inside ```CategoryBuilder``` itself).