Add Cargo support

This adds [Cargo](http://crates.io/) as a (partial) build method. This change doesn't remove any functionality from the existing makefiles. Hopefully as Cargo matures, they can be simplified.

The only caveat with the Cargo build method is that there are no pre/post-condition hooks for dependencies. The `build` directive in the root `Cargo.toml` file actually causes `codegen` to be built via make instead of thru its own `Cargo.toml`. Comment out the `build` line and it will be built via Cargo, but then `codegen` will not run at the right time.

To try it out, you can run `make cargo`.