Handle unexpected types in pstructs gracefully.

Many of the various widget deserialize methods throw `AttributeError`
or other unexpected exceptions when fed unexpected types in their
pstruct.
Raise Invalid instead of returning null on invalid pstruct type
Discovered other ways a pstruct can go bad

E.g. missing fields in mappings, or mappings containing
values of unexpected types.
Multi-select widget expects a sequence of strings
FieldStorages for file uploads are falseish
Restore Py3.2 compatibility.
Changelog for PR #203.