Support ordering filter operations
Merge pull request #437 from ambiata/topic/filter-range-ops

Support ordering filter operations
Arbitrary review.

Driven by the earlier arbitrary split, this is a long overdue
review of the arbitraries used throughout ivory (but primarily)
those use in ivory-core.

This makes a number of structural changes, specifically
removing the circular arbitrary resolutions, favouring
Gen over Arbitrary for composition and making custom
newtypes for test top level with their own companions.

This fixes a couple of major issues:
  - Compile time, for a clean test:compile of ivory-core on my
    branch drops from 360s -> 40s.

  - Consistency of arbirtraries.

  - Removes large amounts of duplication.

  - Removes a few more retries.

  - Re-groups things into conceptual buckets closer to the
    underlying ivory concepts.