Don't surreptitiously modify Variant contents

When dealing with Variants:
- Don’t replace UaStructures passed into the constructors with
ExtensionObjects
- Replace UaStructures at encoding time with ExtensionObject
- When decoding a Variant with an ExtensionObject, put the actual
decoded object from the ExtensionObject into the Variant.