GDBM partial implementation and more API changes

Lot of required changes here, essentially begin the migration to BuxtonLayer structs.
The requested enums are now in and used a lot :) We've got get_value working too in gdbm, but we need to modify
the module loading code to store our d_func globally in the BuxtonBackend struct, in order to be able to use these backends. 
Also added a method to automatically determine the path to a database file.