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?

I don't understand the need for this method. This hardcoding will not work, in future there may be more Revit libraries and then we will have to remember to update this method, which is not good.
Find out why do we need different handling of Revit specific libraries as compared to other core libraries or any other zero touch library. All of them should be handled in same manner.