Major update. Rewrote all loading to be asynchronous, allowing us to show a progressbar while loading.

Async loading introduces a slight performance hit, but this may be
optimized. I'll have to look into that.