smalloc: remove extra weak callback

There was an additional weak callback defined to accept a Local<T>, but
that is no longer necessary.
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.

To prevent a double memory corruption the parent has a __refs counter
that keeps track of how many children are pointing to it.