asynchronous copy-on-write btree
"asynchronous" means that all methods require a callback and return nothing directly. in other words, this implementation is completely non-blocking and event-driven.
"cow" means that the entire b-tree is a pure immutable value, represented by its root key. all mutations create a new root key; i.e., a change three levels down in the b-tree causes modifications to the upper levels as well, including creating a new root that references that change down below.
the two main methods are "add" and "scan". "get" and "create" are really just special cases of "add" and "scan". the b-tree relies on a key/value store, the simplest example of which is included as "kv.js".
run "simple.js" for an ultra-simple demo, and "demo.js" for a more involved one.
bug reports and pull requests will be welcomed! thanks in advance.
initially inspired by Justin Wetherell's java code at http://code.google.com/p/java-algorithms-implementation/