add a TotalOrd impl for the unit type
Fix formatting and errors in std::getopts example.

There were three issues effecting the example in the getopts rustdoc:

1. The blockquote was incorrectly formatted.  Fixed by switching to using
   an explicit markdown code section with ```.
2. The `fail fail_str(f)` would not compile.  Fixed by using `fail!()` instead
   of `fail`.
3. The line `matches.free[0]` produced a compile error about moving from
   an immutable vector.  Fix by using `copy`.
Correct copyright year to be 2012-2013.

Previous year range of 2011-2013 was based on file creation date.  The
check_license python script, however, only accepts copyrights starting
in 2012 or later.
auto merge of #5308 : wanderview/rust/std-getopts-rustdoc-fix, r=luqmana

There were three issues effecting the example in the getopts rustdoc:

1. The blockquote was incorrectly formatted.  Fixed by switching to using
   an explicit markdown code section with ```.
2. The `fail fail_str(f)` would not compile.  Fixed by using `fail!()` instead
   of `fail`.
3. The line `matches.free[0]` produced a compile error about moving from
   an immutable vector.  Fix by using `copy`.
Simplify struct representation.

Out goes the extra layer of struct wrapping; the destructedness flag is
added to the end of the struct.  This means that, if the struct
previously had alignment padding at the end, the flag will live there
instead of increasing the struct size.
Get rid of the `Unit` enum representation.

The only thing we really lose is that C-like enums with one variant and a
non-zero discriminant now take up space, but I do not think this is a
common usage.  As previously noted, that was mostly there for
transitional compatibility with the pre-adt.rs codebase.
Implement vector destructuring from tail
Add one more test for vector destructuring
auto merge of #5122 : sanxiyn/rust/vec-match-tail-2, r=nikomatsakis

Incorporated @nikomatsakis's comments from #4748.

Fix #4635.
librustc: Replace all uses of `fn()` with `&fn()`. rs=defun
libsyntax: Stop parsing bare functions in preparation for switching them over
test: Remove newtype enums from the test suite. rs=deenum
libstd: Remove all newtype enums from std and core.
librustc: Remove newtype enums from librustc
libsyntax: Remove newtype enums from libsyntax. rs=deenum
doc: Remove documentation on newtype enums.
libsyntax: Stop parsing newtype enums
test: Fix tests. rs=tests
librustc: Remove old-style operator overloading
librustc: Lint the old `drop` destructor notation off