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
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.
auto merge of #10026 : luqmana/rust/mut-pat, r=pcwalton

Fixes #9792.
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.