This patch is in response to Thiru's feedback about the current C implementation. Thanks, Thiru! I appreciate the feedback.
Previously, all instances of an Avro value contained class-specific data and methods (e.g. callbacks for reading, skipping and writing data). This is inefficient and unnecessary.
This patch creates a per value class registry to hold all class-wide information.
Moreover, this patch creates the framework necessary for support the Avro JSON import/export format. Each value class registers all supported data formats (named AVRO_BINARY_FORMAT and AVRO_JSON_IMPORT_EXPORT_FORMAT). The current JSON parser is a DOM-like parser which is really only suitable for process schema data. The callbacks registered in the value class registry will allow us to process JSON data in a SAX-link fashion moving forward.