Re-layer Compiler into pipeline form.

Add promise-wrapped API.
For module loading we need to access the pipeline between parsing and
  conversion to string.
Maybe renamed it more like it.  I am thinking that we should have both sync and async API, with both having this pipeline access points.  I would like to avoid parse/promiseParse but maybe `stringToTree()` is too far? Again I think we should put this up for discussion unless you have a strong opinion.