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.

Note that there are a few more things that should be done,
these can be seen through out the code as a few `FIX ARB`
tags, and as the arbitrary review issue raised separately.

Can't its a tuple. Would need to be `(DateTimeWithZone.apply _).tupled`, but I prefer ^^^.