Refactoring

- clean up the internal
- add documentation and tests
- kill the Gemfile.extra approach -- eval'ing the test app's Gemfile seems to work just as well