Buffers now contain BufferCores, which encapsulate a chunk of memory.

This makes it much simpler to implement new backing stores that use different data representations. For example, if we load a file in byte-array form, we could simply make a Buffer that's backed by a byte-array. Or if we want to do copy-on-write buffers, we can write a BufferCore that does just that.

I have yet to test the IE version of buffer_core (buffer_core_array), which stores data in an array of 32-bit ints. The ArrayBuffer-backed version works fine.