type_matchup now does template matching and reboxing of stuff.

Now, if something wants list[object] but has a static list that isn't an
object, type_matchup will fix it. This is done by first boxing all the non
objects into objects, and then rewriting the static list to result in a
list[object].

This same sort of thing is also done for hashes if the keys match.

I've changed some parts of sanity.ly to use different initialization to
reflect this.