Nullables and TimeSpan

Nullables were being serialized as objects (i.e. with HasValue and Value properties), and therefore could not be deserialized.

Also added support for the .NET TimeSpan type.