Dump library to XML. Added flattened list of nodes

#### Purpose

Currently dump is making a tree of nodes. This PR adds a flattened list of nodes. Node information is saved this list. To link nodes from Tree to nodes of Flattened list `FullName` property is used. Example of new file you can find in attachment of task [MAGN-5542](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5542).

#### Modifications

Using collections of assembly paths / names all nodes are dumped into 4 categories.

1. `Assemblies` - all loaded assemblies except those who are parts of packages.
2. `Packages` - all loaded packages. Here can be custom nodes and nodes which are members of packages assemblies.
3. `CustomNodes` - free custom nodes. These nodes are not members of any package.
4. `Specifics` - Builtin Functions and Operators.

##### Node modifications

To make separation described above next changes are needed on Node level.

1. Property `Dynamo.Nodes.Search.BrowserInternalElement.FullName` is specified automatically. Used as unique identifier.
2. Added property `Dynamo.Nodes.Search.BrowserInternalElement.Assembly` to know which assembly is owner of Node.
3. Added property `Dynamo.Nodes.Search.CustomNodeSearchElement.Package` to know to which package custom node is belong to. Can be empty.
4. Added property `Dynamo.Utilities.CustomNodeInfo.PackageName` to specify previous property.

#### Unit tests
![001](https://cloud.githubusercontent.com/assets/8158551/5299233/a094d61a-7bcd-11e4-962f-ee8413fe3fa3.PNG)

#### Additional references

[MAGN-5542](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5542).
[MAGN-5554](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5554).

First PR in "Dump library to XML" series: https://github.com/DynamoDS/Dynamo/pull/3270.

#### Reviewers

@sharadkjaiswal, please, take a look.
@pboyer, could you please take a look? Especially on node changes.
@aparajit-pratap, can your `Dynamo.DynamoLoader.Utilities.DumpLibrarySnapshot` function be removed as the one which is replaced by proposed functionality?

The reason in that Preloaded libraries and Imported libraries are handled in a different. For preloaded libraries libraries are loaded in `LibraryServices` constructor:
```C#
public LibraryServices(ProtoCore.Core libraryManagementCore)
{
	this.libraryManagementCore = libraryManagementCore;

	PreloadLibraries();
	PopulateBuiltIns();
	PopulateOperators();
	PopulatePreloadLibraries();
}
```

In function `PreloadLibraries();` functions are loaded. There we have a method
`CompilerUtils.TryLoadAssemblyIntoCore(libraryManagementCore, library);`
which makes magic (for me) and cut assembly file path to file name only. So for all `DSFunctionNodeSearchElements` we have `Assemvly = [Assembly file name]`. But in our collection stored full name to assembly. 

In case of imported library is used function `ImportLibrary(library, logger.)`. There is also called
`CompilerUtils.TryLoadAssemblyIntoCore(libraryManagementCore, library);`
but for `FunctionDescriptor.Assembly` initialized by `library` (full path to assembly). This descriptor is used in creation of `DSFunctionNodeSearchElement`. So it `Assembly` property is correct.

I do not know is this expected behavior for preloaded assemblies but I need take it into account during dumping of library. During writing this lines I have found how this method can be rewritten without hardcoding. The function is must have because of a bit strange behavior described in 1st paragraph.