Callback on error instead of process.exit when Shifter is called programmatically

Added callbacks when handling errors. Removed the log.error call on the compressor callback to continue processing. This is to ensure that if Shifter is called programmatically and an error happens, a callback is executed rather than process.exit(1).

Submitting this for early review of the changes.

- [x] Still need to write unit tests. 
- [x] Documentation