Experimental setup for loading external files.

Although it currently appears to be operational (at least according to my
tests) there are still a few things I'm unsure about. In particular the naming
of FileScanner and FileLoader is confusing, so is the requirement of having to
pass the list of directories around. Expect this to change.

See #29 for more info.