Don't type parameters the same way as returns

What the TypeMapper was doing was correct for a function return value,
matching the return value to the narrowest mapped type that the actual
return value could be assigned to.

It was not correct for a function parameter, which needs to be matched
to the widest mapped type that could be assigned to the parameter.

Jens, if you ever read this, forgive me. At least I caught it quickly.
Code hygiene

Unrelated to the bug, clean up some string literals that
had been used in place of class literals.
Spelling conformity

Also unrelated to the bug, a spelling change pointed out in an
earlier comment.
Merge pull request #13 from jcflack/bug/master/contravariance

There's always something to catch *after* the pull