buffer: add dispose to Buffer instance api

Users now have the ability to manually dispose a Buffer when it's no
longer needed. This will transform the instance into a zero-length
Buffer. If the instance was a slice then the memory is not actually
released, but the pointer to the parent allocation is removed.
smalloc: use malloc instead of new

To use realloc the implementation had to be changed to use malloc/free.
{stream,udp,tls}_wrap: remove unused offset/length

The function arguments offset and length are now no longer used since
all I/O requests now use discretely allocated memory.