Add a hook for post-ANF transformation

For use by custom implementations of the async macro.
Abstract over use of scala.util.Try

Custom implementation of the async macro may choose to use
a different data type to represent `Throwable | A`.
Merge pull request #42 from retronym/topic/hooks

Hooks for custom async implementations