Repository arbitraries

This PR is about adding an `Arbitrary` to produce a `Repository` that is not empty.

 - I've split the big `core.Arbitraries` object into several traits
 - I've introduced a new `ivory-testing` project with an `Arbitraries` object that is re-exporting the ivory arbitraries contained in the test packages
 - I've created a new `ArbitraryRepositories` trait to generate a `TemporaryRepositorySetup` which is a `TemporaryRepository` with a sequence of setup operations to populate it
 - At the moment I'm only importing a random dictionary and creating a bunch of commits. Ideally this should be extended to really ingesting facts and interleave those operations so that we have more diverse generated repositories
 - Also my test case didn't pass with an arbitrary S3 repo but I don't know why yet
Have you tested this with a downstream project? I am not sure it will actually work because we don't publish test jars, would have to change that as well I think.