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.
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).
Implement another error code found on windows.

Closes #8811
Make the documentation for std::task::spawn_sched render correctly.

Currently each line is a separate bullet point in a list: http://static.rust-lang.org/doc/master/std/task/fn.spawn_sched.html
Fix a typo in a rt::io::signal test

It was pretty much a miracle that these tests were ever passing. They would
never have passed in the single threaded case because only one sigint in the
tests is ever generated, but when run in parallel two sigints will be generated.
Ignore a test which never completes on windows

I'm not entirely sure why this is happening, but the server task is never seeing
the second send of the client task, and this test will very reliably fail to
complete on windows.
make the bottom type immediate

Before:

    define void @_ZN3bar19h9d9b965357abc043af4v0.0E({}* noalias nocapture readnone sret, { i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone)

After:

    define void @_ZN3bar19h9d9b965357abc043af4v0.0E({ i64, %tydesc*, i8*, i8*, i8 }* nocapture readnone)