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.

I would of done this, it is generally a good practice to be biased towards primitives where you can be, because string generation is non-linear (size * no of tests).  In general we are being too even with our data generation, we should be generating a lot more "easy to debug things" and a lower proportion of white noise.