API Porting

For the most part, this works.
Now, the only place it *isn't* working, is anywhere a string is involved.
This means right now we're unable to set or get strings, and the notification key name is also missing when we're in the callback.

Not quite sure where this is happening, hopefully you'll be able to spot it William.
Also note that buxtonctl is right now broken, and pretty much does nothing apart from displaying corrupt text and hanging on start until it bails. 
Assuming this is an issue with BuxtonClient(*) vs _BuxtonClient, unsure.

Can't actually push changes for gtk client right now, because its not going to work without strings working again (notification string, and string key values)

In protocol, where we loop and free any strings, I had it output the key dstore string value by modifying bxt_hello_get:
```
[ikey@localhost buxton]$ ./bxt_hello_get 
@
Freeing: hello
Freeing: test
@reeing: 
@ot value: 
[ikey@localhost buxton]$
```

Confused about the @. The value never appears, and we seem to have some corruption/memory overflow going on somewhere with strings only. Potentially a copy issue inside libbuxton.