add lenient mode (#8)

- On parse failure, instead of throwing an exception, pretend that the
type expression was a valid name expression.
- Allow 'function' without trailing parens.
- Allow type applications without a period (for example,
'Array<string>').
- Allow type unions without parens (for example, 'string|boolean').
- Allow name expressions to contain '#' and '~', which JSDoc uses to
indicate scope.
- Allow record types to use types other than name expressions for keys.
(This was formerly allowed in all cases but is now limited to lenient
mode.)