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.
`path` shouldn't exist, because it is unsafe. Anything that calls this has to make unchecked assumptions about the make-up of this location.