Added a getFil() method to return the backing file.
Updating method signatures to allow throwing IOException.
Support for entries spanning more than one block.
Ensuring that we don't produce a lot of garbage during operation.

Also changed some contracts of interface/abstract class.