Refactored drslib.drs to create an abstract base class in preparation of specialising for CORDEX.
Fixed refactoring from last commit.  The important tests pass :-)
Implemented general list of optional drs components.
First cut implementation of the DRS._encode_component/_decode_component interface.
Consolodating ensemble encoding/decoding.
Missed module from previous commit
Made the _(d)encode_component() interface symetrical by making both methods classmethods.
Refactored drslib.translate.

Some classes are renamed to remove ambiguity and a more abstract base
class is created in drslib.translate_iface in preparation for a
completely clean implementation for CORDEX.
Merge branch 'master' into cordex
Merge remote-tracking branch 'origin/cordex' into cordex
Removing apparently duplicate code
Deduplicating logic
Marking various places that will need revising for CORDEX
Refactoring to accomodate changes in the files/ directory which will be needed for CORDEX.

More tests are now failing but I think they are contained within tree checking code and p_cmip5.
Removed unused method
Refactoring
Continued refactor to resolve most tests.
Removing redundant translator instance
Moved CMIP5FileSystem class.
Removing unused translator