Default instances

Some helper classes in the SDK are immutable and always use a newly-constructed default instance. This is inefficient, so I added a `Default` property to these types so the default instance can be used without constructing unnecessary objects.

This is a non-breaking change at both the source and binary levels. The public constructor for each remains in place so user code which *explicitly* constructs new instances of these types (as opposed to passing `null`) does not break.