added empty() to Peekable
extra::ebml: Make reader::Res public

Since reader::vuint_at() returns a result of type reader::Res it makes sense
to make it public.

Due to rust's current behavior of externally referenced private structures,
https://github.com/mozilla/rust/issues/10573, you could still use the result and
assign it to a variable if you let the compiler do the type assignment,
but you could not explicitly annotate a variable to hold a reader::Res.
extra::ebml: Add unit test for vuint_at()
ebml::extra: Optimize reader::vuint_at()

Use a lookup table, SHIFT_MASK_TABLE, that for every possible four
bit prefix holds the number of times the value should be right shifted and what
the right shifted value should be masked with. This way we can get rid of the
branches which in my testing gives approximately a 2x speedup.
renamed empty() to is_empty()
fixup! ebml::extra: Optimize reader::vuint_at()
Update test run summary
Document blocks and use statements a little more

Closes #3862
auto merge of #11584 : alexcrichton/rust/issue-3862, r=brson

Turns out there is no documentation of a block expression in the rust manual currently! I deleted the "record expressions" section to make room for a "block expressions" section.

Closes #3862
rustc::driver: Capitalize structs and enums

driver::session::crate_metadata is unused; removed.
rustc::metadata: Remove trait FileSearch
syntax::ast: Remove/Recover tests

`xorpush_test` and `test_marksof` are at `syntax::ast_util`.

Fixes #7952
auto merge of #11553 : klutzy/rust/rustc-cleanups, r=alexcrichton
auto merge of #11498 : c-a/rust/optimize_vuint_at, r=alexcrichton

Use a lookup table, SHIFT_MASK_TABLE, that for every possible four
bit prefix holds the number of times the value should be right shifted and what
the right shifted value should be masked with. This way we can get rid of the
branches which in my testing gives approximately a 2x speedup.

Timings on Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz

-- Before --
running 5 tests
test ebml::tests::test_vuint_at ... ok
test ebml::bench::vuint_at_A_aligned          ... bench:       494 ns/iter (+/- 3)
test ebml::bench::vuint_at_A_unaligned        ... bench:       494 ns/iter (+/- 4)
test ebml::bench::vuint_at_D_aligned          ... bench:       467 ns/iter (+/- 5)
test ebml::bench::vuint_at_D_unaligned        ... bench:       467 ns/iter (+/- 5)

-- After --
running 5 tests
test ebml::tests::test_vuint_at ... ok
test ebml::bench::vuint_at_A_aligned ... bench: 181 ns/iter (+/- 2)
test ebml::bench::vuint_at_A_unaligned ... bench: 192 ns/iter (+/- 1)
test ebml::bench::vuint_at_D_aligned ... bench: 181 ns/iter (+/- 3)
test ebml::bench::vuint_at_D_unaligned ... bench: 197 ns/iter (+/- 6)
auto merge of #11601 : dguenther/rust/fix_test_summary, r=brson

The test run summary currently prints the wrong number of tests run. This PR fixes it by adding a newline to the log output, and also adds support for counting bench runs.

Closes #11381
auto merge of #11479 : khodzha/rust/peekable_empty, r=brson

to fix https://github.com/mozilla/rust/issues/11218
float_to_str_bytes_common can now handle exponential notation
Add LowerExp 'e' and UpperExp 'E' format traits/specifiers
Add some tests for the exponential notation
Remove the initial and trailing blank doc-comment lines