Ignore all newline characters in Base64 decoder

Ignore all newline characters in Base64 decoder to make it compatible
with other Base64 decoders.
Consistent formatting for args and attrs
xfail more external syntax extension tests on android
Pass the correct --target flag when type checking pretty-printed code in tests

This makes pretty print tests that have aux crates work correctly on Android.
Without they generate errors ICEs about incorrect node ids. Not sure why.
rustc: remove the explicit count from the lang_item macro.

We can use a secondary macro to calculate the count from the information
we're already having to pass to the lang items macro.
Avoid unused variable warning in quote_*!

The provided span isn't used in all cases (namely primitives).
rustc: check instantiability of fixed length vectors properly.

Previously, they were treated like ~[] and &[] (which can have length
0), but fixed length vectors are fixed length, i.e. we know at compile
time if it's possible to have length zero (which is only for [T, .. 0]).

Fixes #11659.
Add span_note to ExtCtxt

It was the only span_* missing.
Fix misuse of character/byte in std::path.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
auto merge of #11652 : hdima/rust/base64-padding-newlines, r=alexcrichton

Ignore all newline characters in Base64 decoder to make it compatible with other Base64 decoders.

Most of the Base64 decoder implementations ignore all newline characters in the input string. There are some examples:

Python:

```python
>>> "
A
Q
=
=
".decode("base64")
'\x01'
```

Ruby:

```ruby
irb(main):001:0> "
A
Q
=
=
".unpack("m")
=> [""]
```

Erlang:

```erlang
1> base64:decode("
A
Q
=
=
").
<<1>>
```

Moreover some Base64 encoders append newline character at the end of the output string by default:

Python:

```python
>>> "".encode("base64")
'AQ==
'
```

Ruby:

```ruby
irb(main):001:0> [""].pack("m")
=> "AQ==
"
```

So I think it's fairly important for Rust Base64 decoder to accept Base64 inputs even with newline characters in the padding.
Add operator trait constraints to std::num::{Zero, One} and document their appropriate use

Zero and One have precise definitions in mathematics. Documentation has been added to describe the appropriate uses for these traits and the laws that they should satisfy.

For more information regarding these identities, see the following wikipedia pages:

- http://wikipedia.org/wiki/Additive_identity
- http://wikipedia.org/wiki/Multiplicative_identity
Improve std::num::pow implementation

The implementation has been made more succinct and no longer requires Clone. The coverage of the associated unit test has also been increased to check more combinations of bases, exponents, and expected results.
auto merge of #11654 : korenchkin/rust/doc_guide-testing_format, r=cmr
auto merge of #11656 : brson/rust/omgandroid, r=cmr
auto merge of #11657 : huonw/rust/less-lang-duplication, r=cmr

We can use a secondary macro to calculate the count from the information
we're already having to pass to the lang items macro.
auto merge of #11660 : sfackler/rust/quote-unused-sp, r=huonw

The provided span isn't used in all cases (namely primitives).
auto merge of #11661 : huonw/rust/fixed-length-instantiation, r=thestinger

Previously, they were treated like ~[] and &[] (which can have length
0), but fixed length vectors are fixed length, i.e. we know at compile
time if it's possible to have length zero (which is only for [T, .. 0]).

Fixes #11659.
auto merge of #11670 : sfackler/rust/extctxt-span-note, r=alexcrichton

It was the only span_* missing.
auto merge of #11664 : bjz/rust/identities, r=alexcrichton

`Zero` and `One` have precise definitions in mathematics as the identities of the `Add` and `Mul` operations respectively. As such, types that implement these identities are now also required to implement their respective operator traits. This should reduce their misuse whilst still enabling them to be used in generalized algebraic structures (not just numbers). Existing usages of `#[deriving(Zero)]` in client code could break under these new rules, but this is probably a sign that they should have been using something like `#[deriving(Default)]` in the first place.

For more information regarding the mathematical definitions of the additive and multiplicative identities, see the following Wikipedia articles:

- http://wikipedia.org/wiki/Additive_identity
- http://wikipedia.org/wiki/Multiplicative_identity

Note that for floating point numbers the laws specified in the doc comments of `Zero::zero` and `One::one` may not always hold. This is true however for many other traits currently implemented by floating point numbers. What traits floating point numbers should and should not implement is an open question that is beyond the scope of this pull request.

The implementation of `std::num::pow` has been made more succinct and no longer requires `Clone`. The coverage of the associated unit test has also been increased to test for more combinations of bases, exponents, and expected results.
auto merge of #11673 : omasanori/rust/sep-doc, r=alexcrichton