Implement the new custom build commands

Does include:
 - The build script is compiled as a regular target in `target/build/$pkg`, its output is written in the same directory in the `output` file, and has `target/build/$pkg/out` available to write temporary files
 - Rename `plugin` to `for_host`
 - A different system for passing command descriptions to the shell
 - Deprecation of the old custom build script system with a warning if it is being used

Does not include:
 - Support for `links`, I plan to add this after this PR is merged
 - `DEP_<links>_<key>`: You just need to uncomment a block of code, but can't be implemented without support for `links`
 - Build dependencies, I plan to add this after this PR is merged
 - Tests to check that `rustc-flags` are correctly passed to rustc, because rustc doesn't support the `-l` flag yet. I'll add this in a commit at the end of the PR once rust supports it (or maybe even before if I compile the fork).
 - There's no feedback of the custom build system in the `Compilation` struct
 - The `build` directory is not used when determining the fingerprint, something that was apparently done for the `native` directory

I recommend reviewing commit by commit. I implemented each feature one by one (tests should pass for each individual commit).