language changes: integer type fallback is gone; + on String is back.

also features an updated version of `lex!` which allows for
user-defined parsers (at expense of a slight syntax modification);
we need it as, say, `f32` and `f64` can't be simply unified to
the same code without introducing a new trait.
a new trait `FromStrPrefix` subsumes the existing `scan_*` extension
methods, and thus `util::std::str` has been greatly reduced.

also due to the recent lifetime inference problem (rust-lang/rust#15140)
we now use custom methods `.as_ref_slice()` and `.as_ref_slice_or()`
for the major source of this problem.