Fix #30.

This change exposes the interface to `parseUnit` so that clients
can do further processing on parse unit expressions. This also
cleans up the code considerably, removing the GADT nonsense, as
discussed in #27.