Redesigned how annotations are parsed and used to instantiate fields; an iterative process is now recursive.
This is simpler, enables more informative error messages, and makes containers slightly more robust; supported annotations now include sequence types containing literals or enums (eg `List[Literal[0, 1, 2, 3]]` or `Tuple[SomeEnum, SomeEnum, SomeEnum]`).