initial commit of the parallel version of cmi
Fix issues with absolute paths
implement getting recursive build deps in one func

this single implementation in the
catkin.cmi.common module also can cache the result
because calculating it is expensive and done
each time a job finishes
refactor the CLI

you can now:
- build explicit packages in the workspace
- choose to not build deps with --no-deps
- passing arbitrary cmake/make args now works
- only list the packages to be built, do not build

These options were add but are not implemented:
- skip packages up to a certain pkg, --start-with
- order the output of commands into blocks
remove vestigial function
pcmi: output ordering and changed default behavior

pcmi now outputs delayed, ordered output by
default, and you can instruct it to output
interleaved data without a delay. It will also
printout data without delay when only one
executor is being used.
remove locking for devel and install spaces
improve output of pcmi
added --space-suffix option
fixes for --install
try and capture all data from subprocesses

this might not be needed
write job logs to file
implemented --start-with
do not use --extend when only one source
strip ansi escape characters in output files
sort packages after determining what will be built

This also removes duplicates
fix logging bugs found while testing
fix run_unix implementation on Linux
added `--lock-install`, locking for install space

this can prevent spurious errors from interleaved
i/o access of the install space by preventing
multiple install commands from being run in
parallel
improved terminal width estimation functions