Move `position` and `rposition` methods to `ImmutableVector` trait
libstd: impl Num for BigUint/BigInt
Update .gitignore
libstd: impl `Orderable` for `BigUint`/`BigInt`
libstd: `Rational` requires `Integer` as type bounds instead of `Num`
libstd: `Ratio` requires `Clone` instead of `Copy`

This allows creating `Ratio<T>` which `T` is non-implicitly copyable types
such as `BigInt`.
libstd: Add tests for BigRational
Replace shared/unique by managed/owned in the tutorial
Add inlining for iter_bytes for types used as hashmap keys

Not inlining these affects the hash table performance quite badly.
testsuite: Update and un-xfail unsafe-fn-autoderef
Add Scheme-style `cond!` macro to syntax::ext::expand

Addresses issue #6037
auto merge of #6468 : gifnksm/rust/rposition-immutable, r=brson

`position` and `rposition` belonged to `ImmutableCopyableVector`, but they don't need the value is copyable.
auto merge of #6471 : gifnksm/rust/reform-rational, r=brson

`std::ratio` module contains `BigRational` type, but the type is not usable by following reasons.
* `Ratio::new` requires `T: Copy + Num + Ord`, but `BigInt` is not implicitly copyable, because it contains unique vector.
* `BigInt` is not implements `Num`

So, I rewrite `Ratio` as follows.
* `Ratio` requires `T: Clone + Integer + Ord`.
  * `Copy` -> `Clone`: to be able to use `BigRational`
  * `Num` -> `Integer`: It is incorrect that a rational number constructed by two non-integer numbers.
* `BigInt` implements `Num` and `Orderable` which are required by `Integer` bound
Better error reporting with renaming imports
Add test for resolution errors
Add span to some import resolution errors
Get span from import_directive
Fix ICE
Fix resolution tests
rustpkg: Implement URL-like package IDs

This patch implements package IDs like
github.com/catamorphism/test-pkg.

To support such package IDs, I changed the PkgId struct to contain
a LocalPath and a RemotePath field, where the RemotePath reflects
the actual URL and the LocalPath reflects the file name of the cached
copy. Right now, the only difference is that the local path doesn't
contain dashes, but this will change when we implement #6407.

Also, PkgIds now have a short_name field -- though the short name
can be derived from the LocalPath, I thought it was cleaner not to
call option::get() wantonly.