Using getters to lazy load modules
use defineProperty for lazy loading
Add tests for the lazy loading

I don't like this though, because it is adding an option to the main
module that's only in place to allow for testing. Writing implementation
code just to make tests work is bad. That said, I can't think of a
better way to enable us to test when require() is called.
Merge pull request #20 from jackfranklin/pull-18

Lazy Loading via defineProperty