Implemented Decodable/Encodable for Cell and RefCell. Fixes #15395

I ran `make check` and everything went smoothly. I also tested `#[deriving(Decodable, Encodable)]` on a struct containing both Cell<T> and RefCell<T> and everything now seems to work fine.
Could you format this with more spaces:

```rust
impl<E: S: Encoder<E>, T: Encodable<S, E> + Copy> ...
```

(And similarly for the others below.)