extra: Add getter methods to extra::rational::Ratio

After merging 0ada7c7, user code have not been able to access to `Ratio`'s numerator and denominator fields.
In some algorithms, it is needed to get an rational number's numerator or denominator, but keeping these fields private is necessary for guaranteeing that `Ratio` numbers are irreducible.
So, I added the getter methods `numer()` and `denom()`.

As a bonus, this commit adds utility methods relating to the ratio-integer conversion.
libsyntax/librustc: Allow mut qualifier in patterns.
libsyntax: Get rid of some logic for some obsolete syntax.
Test for mut in ident patterns.
librustc: Don't emit unused mut lint twice.
libsyntax: Get rid of obsolete obsolete warning.
lock-free queue for scheduler message queue
add cache line padding
add multi-producer multi-consumer bounded queue to use for sleeper list
add padding to prevent false sharing
clean up
fix bug introduced by previous clean up. more clean up.
minor
minor
Tidy
Add links to original mpmc and mpsc implementations
Encapsulate the lock-free mpsc queue in the MessageQueue type
Enhance timers to create ports

In addition to being able to sleep the current task, timers should be able to
create ports which get notified after a period of time.

Closes #10014
Rewrite boxed_region/memory_region in Rust

This drops more of the old C++ runtime to rather be written in rust. A few
features were lost along the way, but hopefully not too many. The main loss is
that there are no longer backtraces associated with allocations (rust doesn't
have a way of acquiring those just yet). Other than that though, I believe that
the rest of the debugging utilities made their way over into rust.

Closes #8704
Make addl_lib_search_paths a HashSet (Closes #7718).