Restructure code w/ passing lint

Signed-off-by: Evan Senter <evansenter@gmail.com>

Two superfluous failures for `npm run lint`:

    index.js: line 11, col 14, You might be leaking a variable (exports) here.
    index.js: line 138, col 3, Missing 'new' prefix when invoking a constructor.

This is really a bandaid for the fact that this package is very sensitive to valid NPM packages which cannot be required via `context[displayName] = require(pkgPath)`, but the restructure alone is worth it, since it lets me monkey-patch the behavior downstream.