BuxtonArray

Long story short:
 * Far easier to work with
 * Far safer, reduce duplicate memory management elsewhere
 * Track lengths, no need for size_t in returns
 * Added a handy BD(x,y) macro to quickly access a BuxtonData pointer
 * Just keep using buxton_array_add, let it worry about the work :)
 * Reduce the amount of duplication in cleanup code (for loops for example..)

I'd personally like to see some more of the code converted to use this, i.e. client lists and such, as its a far cleaner solution. In fact it wouldn't hurt even to change some of the pollfd handling, etc, to use this. Just a thought.

Side note: I migrated all of the `make check` tests to the new system, so all of the work is basically done on this. Tested, confirmed it works (been doing this the entire day) and also confirm that the one make check error in check_lib was present before my changes, a serialisation issue not a deserialisation issue.(around 534 in check_shared_lib.c)

(Re: Marshalling comment from William previously, there's no harm in converting to methods returning some kind of specific struct with the array inside it :))