Create tuple element accessor traits
use n{0..11} instead of _{0..12} for accessor method names
Use assert_eq! instead of assert!
Merge trait and impl macros by using an inner module
Return a reference to the tuple elements instead of copying
auto merge of #6591 : bjz/rust/tuple-elements, r=thestinger

This commit implements element getters for tuples with an arity of 2 to 12. The getters return references to the elements, so no copying occurs. The traits are re-exported in `core::prelude` so you can use them from regular Rust code.

Here is an example of one of the getters in use:

~~~rust
assert_eq!((2, "hi", 75.0).n1(), &"hi");
~~~