Add plumbing for SSL/TLS support

This change abstracts out the networking functions so that the
user can provide an SSL/TLS implementation.

Callback functions replace `writev()`, `send()`, and `recv()` (there
is also a callback for error reporting). The default interface remains
unchanged. If the user wants to create a SSL/TLS connection they first
negotiate the connection and then use the new function
`amqp_set_sockfd_full()` to provide the networking implementation for
their SSL/TLS library. The user may provide an optional pointer to data
that is passed through to the networking functions.

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Implement SSL/TLS over CyaSSL, GnuTLS, OpenSSL & PolarSSL backends

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Reduce allocations in SSL writev implementations

This change reduces memory allocations by retaining the writev buffer
across invocations. Memory is only freed/allocated if the buffer too
small.

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Add amqps:// support to the URL parser

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Update polarssl.m4

1. Update license to match the rest of the project

2. Update library check (similar to previous change in popt.m4)

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Fix non-SSL build in the tools directory

Also reduce OpenSSL requirement to 1.0.0 (0.9.8 would probably be fine
as well).

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Adding support for SSL to CMake build system
Changing return type on amqp_socket_writev to match fn ptr type
Define `ssize_t` for MSVC builds

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Switch from stdbool.h to amqp_boolean_t

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Add checks for Unix-specific header files

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Use `_stricmp` instead of `strcasecmp` for MSVC

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Cleanup CMake build a bit

1. Add checks for Unix/Linux-specific header files (similar to
configure.ac)

2. Added a check for the `-std=c99` flag. It appears that some of this
code uses C99 and compiling without this flag produces quite a few
warnings.

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Add SSL/TLS examples

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Clean up documentation in <amqp-ssl.h>

Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Move MSVC ssize_t defs outside AMQP_PUBLIC_* macro ifdefs
Moving posix-specific inet includes to unix/socket.h
Make socket function declarations match defintions
Relaxing restriction on OpenSSL to support v0.9.8
Adding amqp_set_initialize_ssl_library() API function

Function sets whether or not rabbitmq-c will initialize the underlying
SSL library