Introduce thrift format for ingest

Definitely some questions around this - opening it up for discussion
Will rename this class to `Ingest` (I guess?) when this PR is ready.