Fast index merging.

* `TranslateIO` - Uses two `IO`s underneath. One contains a mapping of file names to system (immutable) names. The other is the actual index rows with immutable file names.
* `Translate` and impl - Mechanism to assign mappings from file names to immutable system names.
* override `Directory.copy()` to support fast directory copies when the underlying pieces allow it.

To be sure, there are bugs here (I'm not seeing all the files I expect when listing). But search works after a (fast) merge, so I need better tests.