typeck::check::_match: Better error handling

Previously this was an Option::unwrap() which failed for me.
Unfortunately I've since inadvertently worked around the bug and have
been unable to reproduce it. With this patch hopefully the next person
to encounter this will be in a slightly better position to debug it.
Better handling on parameter lookup failure
middle::ty::str: Derive Show

This also adds Show instances for contained types.
middle::subst: Use custom Show for VecPerParamSpace
middle::kind: Use sty's Show instance instead of {:?}
middle::typeck::astconv: Use Show instead of {:?}
typeck::infer::region_inference: Use Show instead of {:?}
middle::typeck::astconv: Use Show instead of {:?}
syntax::ast: Derive lots of Show impls
middle::kind: Don't crash when checking safety of Drop

To verify that a type can satisfy Send
`check_struct_safe_for_destructor` attempts to construct a new `ty::t`
an empty substitution list.

Previously the function would verify that the function has no type
parameters before attempting this. Unfortunately this check would not
catch functions with only regions parameters. In this case, the type
would eventually find its way to the substition engine which would
attempt to perform a substitution on the region parameters. As the
constructed substitution list is empty, this would fail, leading to a
compiler crash.

We fix this by verifying that types have both no type and region
parameters.
middle::def: Derive Show
middle::ty: Derive Show
middle::typeck::collect: Add debug output for lifetimes