Add new type of hooks

Also fix some default values lookup issues
Fix #5732 - Refactoring of exit code

The logic around exit code was extracted to new class. You can still
trigger exit using KafoConfigure.exit(code, &block) call. We also log
the exit code.
Fix #4959 and fix #3224

Log messages are buffered and log once again when Logger is setup. Also
we keep all errors and repeat them at the end if the process fails.
Add custom configuration storage
Enable progress bar with Puppet 3.6
Version bump