Made TileReader an abstract class and created a subclass DefaultTileReader
that contains the implementation of the read method that was in TileReader.
Made ImageReader an abstract class and created a subclass DefaultImageReader.
This is so other ImageReader implementations can be created.
Changed TileReader from an abstract class to an interface.
Created a TileReaderDecorator abstract class which implements the TileReader
interface. Created CenteredTileReader, a subclass of of TileReaderDecorator.
Using CenteredTileReader in AsynchronousPyramidGenerator.