Allow prefix function arrow type

Also fix a regression that made arrow type
parsing more permissive than desired due to
missing colon^s
Add ->* type constructor for optional arguments
Abstract out function that checks ->* style types
Lift out `partition-kws` function into util module
Print ->* style types with ->* constructor

This recognizes the type for a function like
`regexp-match?` and will print it concisely.
Use syntax classes to parse ->* type constructors
Do not allow parentheses omission for prefix ->

Also fix multiple -> detection, which was broken
Apply All's rules for parentheses omission for :
Improve error messages from : annotation form

Emit errors in terms of the original user-supplied syntax,
not the helper macro syntax
Adjust printing of -> and ->*

Use prefix printing in all cases, and add indentation
rules for pretty printing
Document the new prefix function type constructors