Add support async scripts

/to @bajtos 
/cc @ritch 

The PR adds two enhancements for boot:

Allow boot scripts to be executed asynchronously
> module.exports = function(app, callback) {...}

async doesn't call process.nextTick() but it proceeds to the next iterator when done is called (either synchronously or asynchronously). If done is invoked synchronous, async will call the next iterator synchronously. This seems to be the behavior we can use as-is for boot scripts and we don't have to differentiate between sync and async scripts.