Forbid moves out of static items Closes #10577
Replaced @List with ~List in Rust's recursive example
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
Implemented list::is_empty() based on Container trait
Removed deprecated list::{iter,each}() functions
Replaced list::has() with list::contains()
Refactored list::head() to be based on List<T>
Refactored list::tail() to be based on List<T>
Refactored list::append() to be based on List<T>
Replaced list::push() with unshift() based on List<T>
Forbid certain types for static items

- For each *mutable* static item, check that the **type**:
    - cannot own any value whose type has a dtor
    - cannot own any values whose type is an owned pointer

- For each *immutable* static item, check that the **value**:
    - does not contain any ~ or box expressions
        (including ~[1, 2, 3] sort of things)
    - does not contain a struct literal or call to an enum
        variant / struct constructor where
        - the type of the struct/enum has a dtor