Restore support for using ghost as a npm module fixes #1326

This resolves the issues we faced when I first implemented supporting ghost as a module.

This pushes all packages to delegate to `./core/server/config` when they need to access the config.js environment object.

The only weird thing exists in `./core/server/config/index.js` where I have an || statement that uses a require statement to fetch the config.js file.  This was required because it seems that grunt runs each task in their own process.  So when `grunt loadConfig` is executed, it creates the `config.js` if it needs to.  However when the mocha tests are then run the cached config object no longer exists.  Hence the need for the odd require statement.  I added a comment there to explain why it's there as well.

Aside from that everything else in this should be straightforward. 

Looking forward to feedback :).