Moving towards a slightly more standard project layout

Putting 'require_relative' in every file is going to get old fast and will cause problems when we start moving files around. The more standard approach is to place source files in the `lib/` directory and then to arrange them into subdirectories around modules.