Made Media an abstract class that implements its own getters and setters to avoid code duplication.
Changed how BaseReader implements getData and getKeysToCheck. Added abstract Implementation methods that subclasses will have to override. Makes the steps to adding new readers more explicit.
getKeysToCheckImp should not return anything.