Serialization and deserialization of trace data

The serialized data 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).

```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>
```