Parses the given map and creates a new Schema. The map must come from a previous call to toMap to make sure the schema is valid