Fix a couple small bugs: make filenameOfKey injective, remove possible collision
of project filenames on disk (e.g. a no-project's version colliding with a project name).

I'm running into this exception, however:

  *** Exception: Data.Binary.Get.runGet at position 1: demandInput: not enough bytes