buffer: missed copy parameter
smalloc: add assert for kMaxLength
buffer: return errors for user facing api's
buffer: add kMaxLength check
buffer: make .slice at like Array
buffer: coerce values like Arrays do
buffer: use passed char* data, don't copy
src: more c++ like
buffer: parse arguments more like DataView

DataView will floor the offset, then check its index.
smalloc: assert should check <=
buffer: coerce values and length == .write

.length will now be coerced for negative and floating point values. Also
.write alters the buffer length since the size of the write can be
different from the size of the buffer.

The later solution is a hack, as it will leave unused memory floating on
the js object. A better solution should be developed.
buffer: coerce inputs for .copy()
test: remove old tests and update others

There are some tests that are no longer needed (e.g. throwing for out of
range values in .copy). Also .slice has been updated to ensure it always
works the same as Array.prototype.slice.