Add support for the async! macro, which automatically handles errors and takes in the callback to pass the error to if it arises.
Add asynchronous compilation support, which currently only makes macro expansion async, but the capability can be added in arbitrarily.
Update all the code to use the asynchronous compilation.
If the ast receives options.writer as a function, it will call that repeatedly instead of building a string. This is now used in the command-line interface to output to stdout.
Now able to parse the root node asynchronously. If reading top-level lines, execution can be paused between each line.