Return an exit code on error

This allows an errback to be optionally passed into compile_project. The
roots binary then takes advantage of this functionality to pass in an exit
handler. I also modified the general compile test to fail if an error is
thrown on a successful compile.
Merge pull request #331 from aawilson/feature-exit_code_on_fail

Return an exit code on error