libnative: Implement get_host_addresses.
native: Don't use timerfd on Android

It doesn't seem to exist.
Replace '*' by '..' in the doc of pattern matching
Add '@' subpattern binding and examples to manual and tutorial
Remove reexport field
Move macro_rules! macros to libstd

They all have to go into a single module at the moment unfortunately.
Ideally, the logging macros would live in std::logging, condition! would
live in std::condition, format! in std::fmt, etc. However, this
introduces cyclic dependencies between those modules and the macros they
use which the current expansion system can't deal with. We may be able
to get around this by changing the expansion phase to a two-pass system
but that's for a later PR.

Closes #2247
cc #11763
Delete ignore! macro

This was a holdover from when we didn't allow nested comment blocks
(think #if 0). It isn't used anywhere.
libstd: Use iotest! for for get_host_addresses.
libnative: Avoid gai_strerror on windows.
auto merge of #11732 : luqmana/rust/native-getaddrinfo, r=alexcrichton

The last bit I needed to be able to use libnative :P
auto merge of #11748 : brson/rust/timerfdandroid, r=alexcrichton

It doesn't seem to exist.
auto merge of #11764 : Armavica/rust/doc_patmatch, r=pcwalton

I also removed the obsolete '*' wildcard from the manual.
auto merge of #11772 : sanxiyn/rust/reexport, r=cmr

The field is always set to true.
auto merge of #11774 : sfackler/rust/move-macros, r=pcwalton

They all have to go into a single module at the moment unfortunately.
Ideally, the logging macros would live in std::logging, condition! would
live in std::condition, format! in std::fmt, etc. However, this
introduces cyclic dependencies between those modules and the macros they
use which the current expansion system can't deal with. We may be able
to get around this by changing the expansion phase to a two-pass system
but that's for a later PR.

Closes #2247
cc #11763
Add an AtomicU64 type to std::sync::atomics

This also generalizes all atomic intrinsics over T so we'll be able to add u8
atomics if we really feel the need to (do we really want to?)
Enable the +v7 feature on Android by default

With the recently added double word CAS functionality on 32-bit ARM (enabled via
a 64-bit atomic instruction in LLVM IR), without some extra features enabled
LLVM lowers code to function calls which emulate atomic instructions. With the
v7 feature enabled, proper 64-bit CAS instructions are used on 32-bit arm.

I've been told that v7 for arm is what we should have been doing anyway. This is
overridable by providing some other non-empty feature string.
extra: Make room for more sync primitives
extra: Add an intrusive MPSC to be used soon
std: Hardcode pthread constants and structures

This allows for easier static initialization of a pthread mutex, although the
windows mutexes still sadly suffer.

Note that this commit removes the clone() method from a mutex because it no
longer makes sense for pthreads mutexes. This also removes the Once type for
now, but it'll get added back shortly.
extra: Introduce a new efficient Mutex type

There are no current consumers of this mutex, but rather more will be added
soon.