cr is a unified interface to dealing with output directories, and all the
things you do with them.


It offers the advantages of dealing with multiple output directories in a
single client, and unifying the command lines needed to deal with the various
flavours and targets.
This means it will be very easy to build run and test multiple platforms in a
single checkout.
It also makes the commands more discoverable by being a single starting point
with built in help.

If you are using bash, source cr-bash-helpers.sh and you will get the cr
function in your shell, along with tab completion.
