Serialization and deserialization of trace data

#### Serialized data in DYN files

The serialized data (for a 3-dimensional point array) looks like following at of this pull request (I will describe more as to how the trace data got reconstructed from ```XmlElement``` during a file load soon). Note that for clarity quite a big portion of repeated ```TraceData``` is removed from here:

*See below for pending tweaks that are required*

```xml
  <SessionTraceData>
    <NodeTraceData NodeId="f302c88d-2529-4d5f-a035-4111627ae102">
      <CallsiteTraceData>
        <TraceData Data="" />
      </CallsiteTraceData>
      <CallsiteTraceData>
        <TraceData Data="">
          <TraceData Data="">
            <TraceData Data="">
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
            </TraceData>
            <TraceData Data="">
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
              <TraceData Data="RevitServices.Persistence.SerializableId" />
            </TraceData>
          </TraceData>
        </TraceData>
      </CallsiteTraceData>
    </NodeTraceData>
  </SessionTraceData>
```

#### Pending tweaks required:

1. ```DestroyLoadedTraceDataForNode``` method is not currently called. It should be called whenever a ```DSFunction```, ```DSVarArgFunction``` or ```CodeBlockNodeModel``` is modified (technically, the former two cannot be modified by the user). This way, any cached ```XmlElement``` which carries the old trace data will be destroyed before corresponding ```CallSite``` objects are created for that UI node.