Support enums
Add readme
Add GPL3 licence
Initial commit

All methods for reading and writing all types in the spec have an
initial (and likely very buggy) implementation.

Note that because of the way D works, some features are not directly
accessible e.g. as there are no built-in varint types, they have
distinct methods and must be called explicitly otherwise data will be
read/written as a ulong/long. Read/write for full-featured types will
come later with schema-based templates.