disposition keyword for set_xxx, header test for all.

The parameterized header test I happened to use set_content on msg,
which was good, because it revealed a bug in that method.  I think
I've used msg.set_content at least one while testing each feature,
but I wonder if I should convert them all.
Fix _sanitize to handle unicode.

The whole point is to decode stuff into unicode, so we can end up with
non-ascii valid characters as well as garbage bytes.  This came up in
doing set_param with a non-ASCII value: _sanitize raised a UnicodeError.
This change means (as the comment says) that we may end up decoding some
technically junk bytes into utf-8, but since utf-8 should be becoming
more and more common, this doesn't seem terrible.  If you want to know
that there were bad bytes, check the defects or have the raise.
filename parameter for set_xxx.

Also fix the names of a couple of test parameters.
cid and params for set_xxx.