Change message protocol to add a message ID field

The client will now send messages with a message ID to the server that
the server will then put in responses to the client. This is intended
to be transparent to the client as a mechanism to implement callback
functions per message.
Add FIXME
Don't check label on client test

Clients do not care about the label status and shouldn't depend on it
being set any particular way.
core: Change structure for daemon responses

All client calls to the daemon (aside from list keys) now return the
key being acted upon. This change is for callbacks to be generic per
API function without the client needing pass the key it used itself.
libbuxton: Add hashmap initialization and locking

This is to allow multithreaded clients to safely update the callback
hashtables. This also changes client open to only allow one open per
process.
libbuxton: Add callback functions to API definitions

Enable the client to pass callback functions to the API.
shared: Add check for null array in buxton_array_free
shared: Register callback functions

Add callback functions to callbacks hash that will be checked in
buxton_wire_get_response. Also check hash every time we get a response
in order to purge timed out responses.
shared: Indentation fixes
shared: Add _write utility function to handle EAGAIN

Will be used for writing to the O_NONBLOCK fd that we will switch to
using.
core: Configure daemon socket to use O_NONBLOCK

Also use _write to write messages to the client.
libbuxton: Hook in callback support

Change API to support callback functions.
Add FIXME
Enable O_NONBLOCK for the client using libbuxton