Fixes #261 Squashing non-index attributes into a single mutation. This optimizes ingest and query.

This isn't quite ready for a full review- though anyone is welcome to start looking through the code. There's a ton of things that need redesigning.
Same as comment above, you can avoid create a list by just using Sets.newHashSet()