Merge in ForkTable filesystem scoping (Closes #15)

This re-implements file system scoping using the `ForkTable` @ArcticLight developed originally for Decaf.

All tests should pass as of commit 4eef96c (see the [build on Travis](https://travis-ci.org/MeteorCode/Pathway/builds/45227586)). One test needed to be changed, as it appeared to expect incorrect behaviour, see 4eef96c for details.

If we want to bind the final two "layers" (with and without the write directory) of the file system `ForkTable`, as @ArcticLight mentioned a while ago, that could be implemented pretty easily, but isn't supported yet since we currently don't use this. 

All of the IO access token code is currently commented out. If we still want to implement this, we'd need to modify the `ResourceManager.makeHandle(path)` method in order to have the `FileHandle`s be created as children of the top-level `FileHandle`, or just store all the handles in the paths map instead of just their paths. We also need to determine how the initial root `FileHandle`s receive the correct access token.