Work in progress

- Removing all use of pk__in=<list> in favour of subqueries or
different methods.
- Reworked polymorphism to utilise deferred calls instead of pk lookups
- Reworked querying of distinct attribute values.
- Reworked variation building to be shorter, more intuitive and
efficient.