Feature requirejs optimization

This changeset enables the creation of optimized client builds, where all of the scripts are dumped together in one giant script, which is then minified by the requirejs tools. This is the preferred way to do things for production builds, as it avoids any possibility of timeout errors (see #142), vastly reduces the number of network requests (= faster load times), and allows the scripts to be smaller. If we use the closure compiler at this step (rather than the current uglify2), then we might see even more gains here.

As part of this, I had to change the worker thread to use the same package namespace as the main thread, otherwise the optimizer gets confused. However, I think this is actually cleaner, so I'm not complaining :).