Update branch documentation in HACKING
Convert all function annotations to dicts.
Document function annotations in HACKING.

Closes #173.
Check flag length in function annotations.
Don't pass unknown dict keys to argparse in function annotations.
Fix completion with flags.

Fixes #203.