DUI: view model change(for nested classes)

# Preface
I have added new class `BrowserInternalElementForClasses`. It's used to store classes separately from nested classes.
Also I've added some tests.

# Reviewers
@Benglin,@vmoyseenko, please take a look.

Links to YouTrack:
[MAGN-4869](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4869) DUI: Build tree of nodes using BrowserInternalElementForClasses class
[MAGN-4868](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4868) DUI: Create and/or update unit tests to test new tree of nodes
[MAGN-4867](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4867) DUI: Create BrowserInternalElementForClasses which is the container of classes

I'd prefer the method to be rewritten as this:

```cs
internal bool ContainsClass(string categoryName, string className)
{
    var category = GetCategoryByName(categoryName);
    if (category == null)
        return false;

    // Find in some category BrowserInternalElementForClasses, that is full of classes.
    var classes = category.Items.OfType<BrowserInternalElementForClasses>();
    if (!classes.Any())
        return false;

    // Search among all classes one, that was needed.
    BrowserInternalElementForClasses element = classes.ElementAt(0);
    return element.ContainsClass(className);
}
```