Add Enumerable trait and deriving mode

Enumerable is for enumerating all possible values of an enum.
The deriving mode works for all C-like enums.

Use like so:

```rust
use std::enums::Enumerable;

#[deriving(Enumerable, Show)]
enum Shape {
    Circle,
    Square,
    Triangle,
}

fn main() {
    let shapes: Vec<Shape> = Enumerable::values();
    println!("There are {} possible Shapes: {}", shapes.len(), &shapes);
}
```