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.
buffer: better checks, simplify error msg/inspect

inspect() was simplified by leveraging the hexSlice() method and a
simple regex.

Added check to concat() that makes sure there is a valid length.

Buffer::Length() now checks if there is external array data before
attempting to retrieve the length. Also removed superfluous 'v8::'.

Added 'node_isolate' in a few applicable places.

Improved range index error message.
buffer: fix negative uint conversion

It was possible to pass a negative value to several methods, which were
converted to uint without performing a check first. This makes sure
values are not negative, and if they are then coerced to zero.
buffer: WIP coerce arguments

Function arguments weren't consistently throwing or coercing. This patch
makes them always coerce.

Also added few comments, made ::Length return uint32_t (to stay
consistent with Array Length) and added Length for Object.
smalloc: fix "corrupted double-linked list" error

Problem was Replace was assuming the Handle was already a Persistent,
instead of creating a new Persistent for it.
buffer: remove backwards compat

Setting .offset and .parent was causing enough impact that thought they
should be removed.