Update to latest Rust.
Migrate to new `Error` and `FromError` traits.

This removes a really hacky custom `try!` macro.