Js decoupling

This is groundwork started by @jamesgorrie . The change splits the application from a monolithic file (good for caching and network utilisation) into three javascript resources: 
 1. 'core', a shareable collection of modules that can be used by any of the frontend js applications.
 2. 'app', the general client-side application.
 3. 'go', a small entry point that dynamically requires 'core' and 'app'.

It is hoped that critical modules like commercial and analytics can now be moved from 'app' to separate modules that may rely on 'go' and can be executed in a safe context.