Allow asynchronous init scripts

Was talking to @mde about this on IRC the other day. This change just looks for an `init` method in the startup script and executes that asynchronously if it finds one. Doesn't break compatibility with the synchronous `init.js` script that everyone has right now.

This will let us do async stuff like compile assets on app startup.