librustc: Remove a bunch of `@` boxes from `Match`.

This will be needed to add `'static` bounds to `@`.
librustc: Remove `&` inside `@` from borrowck/check_loans.
Start of data structure cleanup for trait system. Get rid of CoherenceInfo, make trait_impls less bogus.
Refactor some coherence/method trans code, add an impls map to tcx.

Rewrite method_with_name_or_default to use the new impls map.
Get rid of ProvidedMethodsMap.
Get rid of resolve::MethodInfo. Closes #4946.
Add provided method information to ty::Method. Get rid of ProvidedMethodSource.
Refactor a handful of stuff in the metadata encoder.
Export information about used default methods instead of regenerating it. Closes #7862.
librustc: Forbid `&` pointers (other than `&'static`) inside `@` boxes.

This makes custom borrowing implementations for custom smart pointers
sound.
rustpkg: Make rustpkg commands work without a package ID

`rustpkg build`, if executed in a package source directory inside
a workspace, will now build that package. By "inside a workspace"
I mean that the parent directory has to be called `src`, and rustpkg
will create a `build` directory in .. if there isn't already one.

Same goes for `rustpkg install` and `rustpkg clean`.

For the time being, `rustpkg build` (etc.) will still error out if
you run it inside a directory whose parent isn't called `src`.
I'm not sure whether or not it's desirable to have it do something
in a non-workspace directory.
debuginfo: Began refactoring of composite type handling.
debuginfo: Renamed *reference-to-* test cases to *borrowed-*
debuginfo: Removed some misleading comments from test cases.
debuginfo: Refactored vec slice code to use the new infrastructure. Added test cases for vec slices.
debuginfo: Refactoring of composite type info generation done.

There is no more StructContext now. Better support for boxed vectors in there too.
debuginfo: Replaced vec::mapi with iterator version.
debuginfo: Added test cases for packed structs (/w drop)
debuginfo: Added support for c-style enums.
debuginfo: Support for tuple-style enums (WIP)
debuginfo: Better support for univariant tuple-style enums.