buffer: use smalloc as backing data store

Memory allocations are now done through smalloc. The Buffer class has
been removed completely, but for backwards compatibility have left the
namespace as Buffer.

All tests are passing except for test-buffer.js. This was intentional as
there is discussion right now on stabilizing how arguments are coerced
or thrown.
buffer: reimplement Buffer pools

This is an undesirable, but for the time necessary since small chunks
are still too slow. It will continue to be improved as alternatives are
discovered.

One important change to Buffer pools was that they are only allocated if
the requested chunk is < poolSize / 2. The fancy method used is
optimized for how v8 handles Smi's, and to make sure if a use sets
poolSize to an odd number the value won't overflow to a double. This
*does not* have a performance impact.