Make error codes returned non-opaque

Publicly define the error codes returned from the various public API
functions. The error codes are defined in the amqp_status_enum and are
all negative in value to work with functions that return positive
values.

OS and SSL specific codes are no longer munged into the error code, as
it is unlikely for that information to be useful to library users,
though there might be useful while debugging the library to retrieve the
internal error codes. We'll punt on that.
Correct detection out of space in amqp_encode_table

amqp_encode_8 and amqp_encode_bytes return 1 on success, 0 otherwise.
Correct the checking of the return value of these functions to match the
style used in amqp_table.c
Re-enumerate error codes.

Current algorithm for error codes:
- All error codes are negative
- Error codes fit into 2-bytes.
- Lower byte is error code
- Upper byte is error category
 - Current categories: general, TCP, SSL
Stop point