As part of moving the dirstate storage logic to another class, let's move
opendirstatefile to dirstatemap. This will allow extensions to replace the
pending abstraction.
Future patches will move the consumers of _opendirstatefile into dirstatemap as
well.
Nit: I think ui should be the first argument.