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

Let's rename ```_items``` to ```items``` (if it can be given a better name that describes what these items are, then that's better. You can consider having ```classes``` or ```classItems``` or something along the same line). Since the property ```Items``` is an ```override``` property, we don't have to rename it.

Can you help verify one thing: having ```setter``` on ```Items``` property is weird, if you can make sure the setter is not needed, then we can make the property read-only. Also, I'm wondering if the property can return ```IEnumerable``` instead of ```ObservableCollection``` (having external code add/delete items from this list sounds like a design problem to me).