librustc (RFC #34): Implement the new `Index` and `IndexMut` traits.

This will break code that used the old `Index` trait. Change this code
to use the new `Index` traits. For reference, here are their signatures:

    pub trait Index<Index,Result> {
        fn index<'a>(&'a self, index: &Index) -> &'a Result;
    }
    pub trait IndexMut<Index,Result> {
        fn index_mut<'a>(&'a mut self, index: &Index) -> &'a mut Result;
    }

Closes #6515.

[breaking-change]

r? @nick29581
This can actually work:

```rust
static T: bool = true;
static F: bool = false;
impl ops::Index<uint, bool> for Bitv {
    fn index<'a>(&'a self, i: &uint) -> &'a bool {
        if self.get(*i) { &T } else { &F }
    }
}
```

It's a little weird, but it does allow the `bitv[n]` syntax.