text: Title: Proposal: Support for Failure-topic forwarding
  Body: Failure handling is an area where there is limited consensus within the Kafka community. One option for Faust would be adding support for failure forwarding in the same pattern as sinks. The API might look like:
  
  ```python
  # in faust.models.record
  # new Faust Record type specifically for error handling
  class FailureEventRecord(Record):
      errormsg: str
      exception: AgentException
      failed_record: Record
  
  # in app.py
  topic = app.topic('my.event', value_type=MyRecord)
  failure_topic = app.topic('my.event.failed', value_type=faust.FailureEventRecord)
  
  @app.agent(topic, sinks=[sink1, sink2], failures=[failed_record_operation])
  async def my_exception_agent(records):
      with record in records:
          raising_operation(record)
  ```
  
  ## Checklist
  
  - [x] I have included information about relevant versions
  - [x] I have verified that the issue persists when using the `master` branch of Faust.
  
  ## Steps to reproduce
  
  Documentations says:
  
  > "Crashing the instance to require human intervention is certainly a choice, but far from ideal considering how common mistakes in code or unexpected exceptions are. It may be better to log the error and have ops replay and reprocess the stream on notification."
  
  ## Expected behavior
  
  Any events which fail stream processing in an agent will be wrapped in a `FailureEventRecord` and delivered to the topic or topics specified in the `failures` parameter to `app.agent()`.
  
  # Versions
  
  * Python 3.6
  * Faust 1.7.0
  * MacOS 10.14.5
  * Kafka ?
  * RocksDB version (if applicable)
  
  