File document

Added the ability to test with a document stored in a file. This is accomplished by adding a `DocumentFactory` interface that currently has two implementations.

- `FixedSizeRandomDocumentFactory` has the _old_ behavior that uses documents of a fixed size with random bytes.
- `SingleFileDocumentFactory` has the new behavior that reads a document from a file on disk and uses that file for all the testing.