Type guards should not affect values of type any

This PR changes type guards to not affect values of type any.

Fixes #1426.

Add comment why 'any' is considered to be a 'structured' type.  (for that matter, comment what we mean by a 'structured type' and thus why a TypeParameter is also considered one).