Pooled random access thing

For review. This implements changes to RandomAccessThing, including a pooled version, which uses a fixed number of fd's at any one time regardless of how many PooledRandomAccessFileWrapper's are open, but which supports a lock-open operation so that we can avoid having to open and close in the middle of a big operation. This is essential for the new post-db4o client layer, but isn't used by anything yet (although we do use RandomAccessFileWrapper's in a few places and could conceivably replace them with the pooled variety).
Given that close() is unusual, whereas lockOpen() happens frequently, is it worth it? Asymptotically it is of course much better, but there's a significant constant slowdown in the much more common operation, and quite a bit more memory ... And we don't need it to scale to millions of open fd's, because nobody will have a ulimit that high!

Thoughts?