Implement get/set_value (get/set_string in CLI)

Implemented get and set value in gdbm, pretty much completing that part.
We now deep-copy a BuxtonData instead of returning internal pointers. 
Added some logic for the CLI in order to detect the amount of arguments a command needs
and to print the usage in case of .. incorrect usage.

Side-issue, set_string isn't correctly operating yet. Hopefully will fix this during the course
of the day. If you swap out the d_string for a hardcoded string it works.Using parameter
from the command line fails to set properly and consequent retrievals also fail.
Usage:
./buxtonctl --direct set-string base KeyName value
./buxtonctl --direct get-string base KeyName

If you test with hardcoded, you'll see get-string operates fine. We also need to introduce
status enums instead of using bool for the set/get methods.