AMF optimizations

Allowed registration of custom serialization functions
Created a Amf3Variant class which prevents unnecessary boxing of values
Created Amf3PropertyReader class which handles remapping of properties to deserializer
Moved class registration function into Amf3ClassDef