Move `position` and `rposition` methods to `ImmutableVector` trait
libstd: impl Num for BigUint/BigInt
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
Ignore two failing flatpipes tests
auto merge of #6479 : brson/rust/flatpipes, r=brson
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
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.
rustpkg: Tests for well-formed and ill-formed package IDs...

...and cleanup, making how we handle version numbers more rational
(specifically, not passing in a versioned name to rustc
with the -o flag), and removing unused code.