Add `map` function to `Ref` and `MutRef` of `RefCell`

This enables one to return references to things inside the primary `RefCell`
content, like this code:

```
use std::cell::RefCell;
use std::cell::Ref;

struct ContainsVector {
    vec: RefCell<Vec<u32>>,
}

impl ContainsVector {
    fn new() -> ContainsVector {
        ContainsVector { vec: RefCell::new(vec![0]) }
    }
    fn index<'a>(&'a self, i: uint) -> Ref<'a, &u32, Vec<u32>> {
        self.vec.borrow().map(|v| &v[i])
    }
}

fn main() {
    let cv = ContainsVector::new();
    cv.index(0);
}
```