transforms.py fixes

A few fixes to `transforms.py`:

* The nested `try` statement meant to choose between the 2- and 3-argument versions of  `field_converter` was catching *any* exception, potentially masking a validation error. Changed to catch a `TypeError` only.

* On line 74, `mapping` was allowed to be a string, but later an iterable was expected, leading to `['f', 'o', 'o', ...]` in `trial_keys` from a "foo" entry in the mapping.

* `None` as a field name didn't trigger a rogue field error.