Added Cargo

This PR adds Cargo and also changes make to use `target` as a build directory
to be consistent and to allow the two build systems to be interchangeable.

Cargo.toml's treatment of the codegen step is not ideal right now, as it treats
is as a `./configure`-like step as opposed to treating it as code, which means
that it runs every time you run `cargo build`. I don't see a way around this as
Cargo is not extremely flexible right now (or at least is not documented as so).
This whole `prebuild` thing is going to be problematic for Windows. There is the assumption at present that even if you’re running Windows you are using bash (so that you can run `./configure`)—a dodgy assumption, but one which will do for now—but the way in which cargo will execute the build command will not work for that; I presume that either it will be running it in a shell or directly as a process.

One workaround if the prebuild file is necessary here is to rename it to `prebuild.bat` and detect by syntax tricks if it’s being loaded as a batch file on Windows and do something instead of `./configure`. A demonstration of such a polyglot technique can be seen at http://blog.bigsmoke.us/2007/06/11/microsoft-batch-file-meets-bash-shellscript