std: Remove Option.or_{default,zero}

These can be replaced with `Some(option.or_default())`.
Document a few undocumented modules in libstd

Hopefull this will make our libstd docs appear a little more "full".
extra: minor cleanup of Zero and Default syntax extension
Renumber the lang items correctly

Also add a test to help prevent this from getting out of sync again.
librustc/libstd: No longer pass crate_map to start.
libstd/librustc: Make the crate_map a weak symbol that libstd links against.
tests: Remove crate_map from start.
clarify vector stub in the container tutorial

This also renames the section, as managed vectors cannot be resized
(since it would invalidate the other references).
0.8 release notes
doc: Update container tutorial with new names of methods and macros

`deque` -> `ringbuf`, mention `extra::dlist`.

fix reference to vector method `bsearch`. Also convert all output
in example code to use `print!`/`println!`
Replace unreachable() calls with unreachable!().

This is the second of two parts of #8991, now possible as a new snapshot
has been made. (The first part implemented the unreachable!() macro; it
was #8992, 6b7b8f2682.)

``std::util::unreachable()`` is removed summarily; any code which used
it should now use the ``unreachable!()`` macro.

Closes #9312.

Closes #8991.
doc: Fix the tutorial's link to rustpkg docs
rustpkg: Register correct dependencies for built and installed files

as per #9112

Closes #9112
Rename the NaN and is_NaN methods to lowercase.

This is for consistency in naming conventions.

- ``std::num::Float::NaN()`` is changed to ``nan()``;
- ``std::num::Float.is_NaN()`` is changed to ``is_nan()``; and
- ``std::num::strconv::NumStrConv::NaN()`` is changed to ``nan()``.

Fixes #9319.
optimized trans_to_datum::auto_borrow_obj code generation in case some trivial cases where simple copying can be applied
minor Type::opaque_trait code cleanup
will not copy trait_callee on stack if it's source expr is a plain borrowed ref
lexer: show correct span on lexical errors

Previously, the lexer calling `rdr.fatal(...)` would report the span of
the last complete token, instead of a span within the erroneous token
(besides one span fixed in 1ac90bb).

This commit adds a wrapper around `rdr.fatal(...)` that sets the span
explicilty, so that all fatal errors in `libsyntax/parse/lexer.rs` now
report the offending code more precisely. A number of tests try to
verify that, though the `compile-fail` testing setup can only check that
the spans are on the right lines, and the "unterminated string/block
comment" errors can't have the line marked at all, so that's incomplete.

Closes #9149.
lexer: report problematic chars verbatim or as escape sequence

... instead of giving their numeric codepoint, following the lead of
fdaae34. So the error message for, say, '\_' mentions _ instead of 95,
and '\●' now mentions \u25cf.
Fix broken tutorial link