numerous parser/stringifier fixes (see details); more test cases; bump version

- Union types are now returned as an object with a `union` property,
which contains the array of types for the union.
- Union types that are optional or nullable, or that can be passed a
variable number of times, are now parsed and stringified correctly.
- Optional function types and record types are now parsed and
stringified correctly.