First step at supporting remote files.

Major change was to make compilation pipeline completely
async so that files can be fetched remotely where we do not
have the luxury of readSync and friends.

This change also introduces a new built in modulator
'lib' that can be used for config only wrapping of
modules. I am not sure how good of an idea this is
yet, but it does mean that you can get up with out
creating wrap projects and builds (which is a pain
when you don't have the infrastructure in place).

Examples of the lib modulator configuration can
be seen in demo/config/bolt/prod.js and
demo/config/bolt/prod-no-conflict.js. Additionally
you can specify a list of dependencies to address
the whole transitive third-party library problem.

Also note that the technique used by the lib
modulator allows for a significant perf bump
because we know about dependencies up front
we don't have to do raw js loading in serial
like the js modulator.

@marlimox Want to review this when you have a chance? There are two main goals, make compile process handle async file loading, and a mechanism to work around the lack of wrap projects (and build infrastructure for getting them happening). I am not entirely convinced by the lib moduiator, but it actually turns out to be ok for the few third party deps required (happy to be told it is ridiculous though).