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.