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 isn't safe, it is type checking and then using the unsafe `.path` call below based on this assumption. As mentioned on the location/repository files above I think this should be made type safe.