smalloc: initial commit

smalloc is a simple utility for quickly allocating external memory onto
js objects.
smalloc: add sliceOnto

This is a generic and simpler way of makeFastBuffer, as it works on any
allocated objects.
buffer: implement buffers using smalloc

This is a mostly working implementation of Buffers using smalloc.

Not all tests in test-buffer.js are passing, and the benchmark
tls-connect is failing with "corrupted double-linked list".

A buffer slice will also add buffer._data which contains a reference to
the raw allocated slice. This would be set as an internal hidden field
except it's slow as rusty gears.
smalloc: add scopes/assert and simplify syntax

Missed a couple HandleScopes, and one assert. Also simplified the Throw
Error syntax for two checks.
buffer: extend undefined first-arg buffer return

Passing undefiend as the first argument to Buffer will now assume the
second argument is the buffer's future length. This is to remove the
very slow Set(length) in cc.