Allow for custom error hanlding via ppnl error handling interface

When the PPNL observes an unhandled exception it does a log.error() and continues.  For our use case* we need a bit more control, so that errors can be martialled and forwarded to a downstream consumer.  To achieve this, this pull request adds a new error handling interface that the PPNL forwards unhandled exceptions to in addition to the existing log.error().  

* All of our errors get encoded into json and pushed to SQS where we later either show them to users or alert on if they are more systemic issues and not user error.