Collect consecutive literals instead of handling them one at a time.
Kwarg passthrough for translation functions (temporary!).
Instead of recursively building the tree as a nested list and then having to
recursively break it down again, just build the tree as a flat list and add
fake elements to indicate the end of a grouping. This simplifies a lot
of functions and allows us to use generators pretty much throughout.