Allow multiple deserializers to be registered on a serializable class

This allows for instances of various classes to be deserialized
polymorphically without specific knowledge of the specific class each
serialized state object belongs to.
Infer ordered constructor params from param names

This allows serializable objects to have constructors that take ordered
parameters instead of hashes.