Style fixes

Signed-off-by: William Douglas <william.douglas@intel.com>
Add handling for optional config file

With this change, both buxtonctl and bt-daemon now accept a
--config-file option to be used in place of the default configuration.

This also adds a new public API function for clients to use in order
to set the configuration file the library will use for opening the
buxton socket.
Work-around a libtool nanny feature

Libtool is "smart."  Libtool will use -Wl,whole-archive on convenience
libraries, which it automatically detects in conjunction with its evil
paternalistic twin, automake, through noinst_LTLIBRARIES.  Of course,
this works with linking your convenience library to shared objects.  But
libtool has deemed it improper to link convenience libraries into your
programs.  They have the following to say:

   As a rule of thumb, link a libtool convenience library into at most
   one libtool library, and never into a program, and link libtool
   static convenience libraries only into programs, and only if you need
   to carry library dependency information to the user of the static
   convenience library.

What this does not really tell you is that libtool doesn't use the
-Wl,whole-archive flags when linking the library into your program, only
your shared libraries.  So, your program will go on its merry way
without the symbols you so desperately need.  That is, until it dlopen's
a plugin that uses the symbols that aren't there.  Then it's "unresolved
symbol!", for you.  At this point, your program usually bites the wax
tadpole.  As such, we have included useless and ugly functions into
buxtonctl to make sure the symbols in the convenience library are there
for the direct mode of operation, where the plugins are loaded by
buxtonctl.

tl;dr my code is ugly- it's libtool's fault

Signed-off-by: Michael Leibowitz <michael.leibowitz@intel.com>
db/gdbm: Store deletion statistics

While storing keys in the database automatically updates the file
structure, deletions (unset) can result in sparse/unpopulated
areas in the file, slowing I/O and a large file size in general.

We store the deletion stats so that when they reach a peak
size they can be reorganized (TODO).

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
db/gdbm: Automatically reorganize database

We now automatically reorganize the database for speed, consistency
and size reasons, once 50 deletions have taken place in a given
database file. After this, the deletion count is reset.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Update TODO

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>