debuginfo: Implemented support for destructured locals.

Conflicts:
	src/librustc/middle/trans/debuginfo.rs
	src/test/debug-info/destructured-local.rs
debuginfo: Support for function arguments. (WIP)
debuginfo: Support for destructured function arguments.
debuginfo: Minor cleanup now possible with new snapshot.
debuginfo: Fixed a few things for PR.
auto merge of #8045 : michaelwoerister/rust/destructuring, r=jdm

As the title says, valid debug info is now generated for any kind of pattern-based bindings like an example from the automated tests: 
```rust
let ((u, v), ((w, (x, Struct { a: y, b: z})), Struct { a: ae, b: oe }), ue) =
    ((25, 26), ((27, (28, Struct { a: 29, b: 30})), Struct { a: 31, b: 32 }), 33);  
```
(Not that you would necessarily want to do a thing like that :P )

Fixes #2533