Initial add of error handling

This is a first-pass for a sane error handling scheme. Adds
ssize_t returns to all (currently, most) client calls, and adds
a new client call for looking up error codes:

  const char *buxton_strerror(ssize_t code)