Xml logfile output

This implements an XML logfile output whenever data is logged. This logfile is completely self-contained, human readable, and importable by any XML parser. The advantages are discussed in #111, but to sum up here this improves archival qualities, since old versions of GCS will not be necessary in order to decode the binary stream. This is especially important if the logfile was generated with a branch that is no longer available, like a private branch with changed UAVOs.

As per a conversation several months ago with @solidgoldbomb, this file does not replace the binary stream but sits side by side. It reuses the original path and filename and adds ".xml" to the end.

Example logfile extract:
```
      <packet Timestamp="25574">
         <uavobject UAVObjID="0xCA4BC4A4" Name="ActuatorDesired">
            <Roll units="% / 100" value="0"/>
            <Pitch units="% / 100" value="0"/>
            <Yaw units="% / 100" value="0"/>
            <Throttle units="% / 100" value="-1"/>
            <UpdateTime units="ms" value="1.321000099182129"/>
            <NumLongUpdates units="ms" value="0"/>
         </uavobject>
      </packet>
      <packet Timestamp="25639">
         <uavobject UAVObjID="0x33DAD5E6" Name="AttitudeActual">
            <q1 units="" value="0.9051308035850525"/>
            <q2 units="" value="-0.04486368969082832"/>
            <q3 units="" value="-0.04262774065136909"/>
            <q4 units="" value="0.4206048548221588"/>
            <Roll units="degrees" value="-6.728512763977051"/>
            <Pitch units="degrees" value="-2.259619951248169"/>
            <Yaw units="degrees" value="49.98044967651367"/>
         </uavobject>
      </packet>
      <packet Timestamp="25639">
         <uavobject UAVObjID="0x18C27680" Name="ManualControlCommand">
            <Throttle units="%" value="-1"/>
            <Roll units="%" value="0"/>
            <Pitch units="%" value="0"/>
            <Yaw units="%" value="0"/>
            <RawRssi units="" value="0"/>
            <Collective units="%" value="0"/>
            <Rssi units="%" value="0"/>
            <Channel>
               <Channel units="us" value="65535"/>
               <Channel units="us" value="65535"/>
               <Channel units="us" value="65535"/>
               <Channel units="us" value="65535"/>
               <Channel units="us" value="65535"/>
               <Channel units="us" value="65534"/>
               <Channel units="us" value="65534"/>
               <Channel units="us" value="65534"/>
               <Channel units="us" value="65534"/>
            </Channel>
            <Connected units="" value="0"/>
         </uavobject>
      </packet>
```

Full output: https://gist.github.com/kubark42/46f8e7a85f19bbbdfe7b

The XML output could probably use a little tweaking, if anyone has suggestions for wording or capitalization.

Fixes #111.