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 some of these should be marked as private?