JCLOUDS-750 Allow abstract value types to be constructed from json using static factory methods.
JCLOUDS-750 Added @SerializedNames which can apply to either a constructor or factory method to capture the corresponding json field names.

Removed wildly confusing mixed naming of constructor params feature.
JCLOUDS-750 allow apis to bind FieldNamingPolicy, which controls fallback naming policy of serialized fields.
Fixed bug found in docker provider where deserialization constructors don't handle json null.