Add bracket rules for parsing collection literals.
Switch from function to struct based patchers.

As it turns out, partial template specialization on functions doesn't
work so well with overloading, causing a ton of incomprehensible linker errors.
Add patcher definitions for basic types.
Add patcher definitions for asio address types.
Add patcher definitions for options and indirections.
Add patcher definitions for tuples.

Done correctly this time, using proper partial template specialization,
instead of a grotesque hybrid specialization/overloding hack.
Add patcher helper for collections.
Switch composites to define patcher definitions.
Add patcher generation for records.
Fix minor generating syntax errors.
Change top-level patching function to do_patch.

Trying to be too clever came back and bit me with name resolution errors.
Update CPPGen state to reflect patcher generation.
Update imperative state for patcher generation
Update top-level patcher call generation.