Debuginfo revamp

This is a rewrite of `create_ty` in debuginfo along with some other functions to modernize it with the current state of the language. The major change is that it no longer takes in an `ast::Ty` and instead only works with a `ty::t`, this is because `ty::t` seems to offer a more complete representation of the rust type system, and most types (like pointers and vecs) do not really need the span info that an `ast::Ty` provides.

What works right now are basic types, tuples and structs. Box, owning pointers, and vecs are not supported even though the code is there, apparently the implementation of these types changed since the debuginfo code was last updated. Also not yet implemented are strings, enums, traits, barefns, and closures, and will cause an ICE if you try to generate debuginfo for them.

This makes progress towards #2012 (or completes it, depending on the criteria).