Using magic to allow support for buffer protocol.

Used ctypes.Union to provide functionality as close as I can to
the cpython wrapper.
Setup doesn't fail if it can't build c extensions
Pypy and Python3 compatibility fixes.

It has proved imposible to provide versions of the main calls
using the buffer protocol due to patchy support across platforms.

I've added a get_wrapper_writable_buffer function which returns
a buffer which is guarenteed to be usable by the wrapper.
Message tests.