DUI: TreeView and TemplateSelector for NestedClasses added.

# Before
![image](https://cloud.githubusercontent.com/assets/8158404/4555869/07054d18-4ec3-11e4-96d7-856ccfa0ce3e.png)
# After
![image](https://cloud.githubusercontent.com/assets/8158404/4555876/23515cf0-4ec3-11e4-9d27-b596ccbcfede.png)
![image](https://cloud.githubusercontent.com/assets/8158404/4555898/6586cd94-4ec3-11e4-9599-71cc80eb9622.png)

# Solution
New TemplateSelector has been created.
# Reviewers
@Benglin,@vmoyseenko, please take a look.
Tasks on YouTrack:
[MAGN-4691](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4691) DUI: Try to replace Categories ListView to TreeView
[MAGN-4693](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4693) DUI: Create TemplateSelector which shows correct DataTemplate for TreeView element
I'd recommend fewer type checks by having less ```is``` and ```as```, so you can try the following (please make sure it works and that I did not miss out anything):

```cs
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
    if (item is BrowserInternalElementForClasses)
        return SubclassesTemplate;

    var browserRootElement = item as BrowserRootElement;
    if (browserRootElement != null)
    {
        if (browserRootElement.IsPlaceholder)
            return CategoryClassDetailsTemplate;

        return NestedCategoryTemplate;
    }

    if (item is BrowserInternalElement)
        return NestedCategoryTemplate;

    const string message = "Unknown object bound to collection";
    throw new InvalidOperationException(message);
}
```