Introduce thrift format for ingest

Definitely some questions around this - opening it up for discussion
> 1: and 3: should be a union, one or the other. It is ok to break compatibility with this struct. As long as we update the cat-errors at the same time.

Can put line in ThriftParseErrorData if you like - but it means we can't view old errors?