Introduce thrift format for ingest

Definitely some questions around this - opening it up for discussion
Yes in the error feed we want it to basically be the error message and a copy of the original input record so it can be  replayed. 

In haskell, I would expect it to be something like:
```
data ErrorRecord = ErrorRecord ErrorMessage ErrorData
data ErrorData = ErroredThriftRecord Version [Byte] | ErroredTextRecord String 
```


It is worth noting that these structures can be changed without too much concern (for the moment) because it really is an ephemeral data set that we don't need to worry about reading back later.