Introduce thrift format for ingest

Definitely some questions around this - opening it up for discussion
> could you give me a bit more of an idea of what you mean.

```
struct ThriftFact {
    1: string entity;
    2: string attribute;
    3: ThriftFactValue value;
    4: i32 yyyyMMdd;
    5: optional i32 seconds;
}
```

There isn't a specific need (AFAICT) to have two nested structs where one top-level one will do. I just copied this for consistency to get something down. The current ingest assumes the file split path contains the namespace, so the thrift structure wouldn't need to duplicate that?