Import library doesn't add root category to library nodes tree

#### Purpose

1. Fix merge bug: Import library doesn't add root category to library nodes tree.
2. Make work with ViewModels in LibrarySearchView view & code.

#### Modifications

To fix bug were added event `CategoryBuilder.RootCategoriesCollectionChanged` were saved `CollectionChangedEventHandler` of `rootCategories`. We need to save it because in some functions we recreate `rootCategories`.

For second task I have just created property `SearchViewModel.SearchRootCategories` which exposes Model's `SearchRootCategories`.

#### Additional references

[MAGN-5677](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5677) DUI: Import library doesn't add root category to library nodes tree 
[MAGN-5667](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5667)  DUI: Make work with ViewModels in LibrarySearchView view & code

This PR should be merged after https://github.com/Benglin/Dynamo/pull/246.

#### Reviewers

@Benglin, please, take a look.
Imagine a scenario I set `builder.RootCategoriesCollectionChanged` twice, the first handler will not ever have a chance to be unregistered (because data member `rootCategoriesCollectionChanged` is not a list/stack). This is rather unconventional way of doing event registration, is there a strong reason why this needs to be done this way? I'd recommend the following way:

1. Expose a new `NotifyCollectionChangedEventHandler` event (external listeners can register on it).
2. Subscribe to `rootCategories.CollectionChanged` internally, say, `OnRootCategoriesChanged`.
3. In `OnRootCategoriesChanged` method, call the handlers in step 1, if anyone is registered.

Does that make sense?