Upgrade to latest Rust

* Replace `~` by `Box<T>`
* Replace `~[T]` by `Vec<T>` where we need growable vectors
* Use the new `MacResult` trait
* Fix a test