Updated how referenced schemas were deserialized.

Referenced schemas were updated to allow them to be programmatically built using an already constructed Schema object. This, however, caused some confusion when the resulting schema was serialized and then deserialized. This has been fixed by creating a protected constructor that can interpret both versions of the schema (one build with a URL and one built with a sub-schema).