Merge pull request #39 from humphd/issue36

Make backends pluggable via FileSystem ctor, fixes #36.
update build
Initial tests from node repo
Working null byte patch checks
Switch to node.js' callback pattrn, update public API to match node.js