unit tests of various existing path functions, implementation of register

I think a more clojure-friendly abstraction for register would be nice (maybe a helper to put the events on a core.async channel, could be adapted from the existing unit-test code). Feedback is encouraged.

Since these tests all use path abstractions, some of which need actual files or paths, the unit tests will need to be run from the top level directory of the project to be consistent.