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 was able to test this, but not as thoroughly as I liked,
because evidently our marketing project in its current form doesn't work
with the transformers branch.

Note that this is based on the transformers branch. I haven't been keeping track of the status of your branches, so let me know if development has moved elsewhere.