DirPaths/FilePaths and locations

This the latest attempt in integrating with the most recent mundane:

 - `DirPath/FilePaths` are being used instead of just `FilePath`

 - the mundane `Store`s are now using a `Key` instead of a `FilePath` (see the `topic/store-keys` branch on mundane)

 - the `Reference` type has been removed and replaced with `IvoryLocation` which is just a `Location` and the `IvoryConfiguration. With this information it is possible to do all the file system interactions that we need and which do not correspond to `Store` operations (like reading an external dictionary). Those operations are located in `IvoryLocation`

 - there is a method on `Repository` to get an `IvoryLocation` once you have a `Key`

There are probably lots of things you will want to adjust but I hope this is a step in a better direction for how we manage paths in Ivory.
This type makes me a little uneasy - I don't think Location in mundane is useful because you can't build library functions on it as it stands - but what ever we have should be shareable between projects, so having to have an extra wrapper to "make it useful" in each project is not ideal either.

Anyway this should not be a stopper for getting this in - but I think we should at least note it somewhere to come up with a better split / home for these "cross-platform" types. At a guess - i think it would make sense to have a single project that depends on saws, mundane and poacher that contains all the "store" and "location" code. This would allow store to be a closed type and get some serious optimisation benefits, would address the testing issues, and also address this weird split. Again, I don't want it to hold this PR up - but we should do it at some point - maybe making an easy picking for it.