Gate default type parameter overrides.
Fixes #12423.
std: minor whitespace cleanup
replace manual Hash impls with `#[deriving(Hash)]`
test: Use `#[deriving(Hash)]` in a couple tests
rustc: rename `hash` to the proper name `state`
auto merge of #12525 : eddyb/rust/gate-default-type-param-usage, r=alexcrichton

Also reverted `#[deriving(Hash)]` to implement `Hash` only for `SipState`, until we decide what to do about default type params.
auto merge of #12522 : erickt/rust/hash, r=alexcrichton

This patch series does a couple things:

* replaces manual `Hash` implementations with `#[deriving(Hash)]`
* adds `Hash` back to `std::prelude`
* minor cleanup of whitespace and variable names.
Replaced @List with ~List in Rust's recursive example
Fixed comment for foldl in List
Added check if other list is empty for List's append()
Renamed variables
Implement Eq for Cell<T>
Modified list::from_vec() to return List<T>
Implemented Items<'a, T> for List<T>
Replaced list::each with iter() in Arenas's Drop impl
Replaced list::each with iter() in get_region
Removed list::foldl() in favor of iter().fold()
Removed list::find() in favor of iter().find()
Removed list::any() in favor of iter().any()
Implemented list::len() based on Container trait