Remove async Compiler functions

Rename API functions with conventional names:
stringToTree -> parse
treeToTree -> transform
treeToString -> write
Why does this take an object. What is the purpose of passing errors here?

I've said this before but can we have write return a string. If I want a source map I can do writeSourceMap or generateSourceMap. We can store the source map on the instance when we do write so we don't have to traverse twice.