Make haste-inst and haste-pkg exit with an error on failure.
Break out Control.Shell into its own library.
Make the error handling of haste-boot a bit more robust.