Added abstract base classes for dataset objects.
Added abstract base classes for dataset objects.

These define the interfaces for the dataset and band_stack classes/objects.
Since these will be different for each satellite/sensor it seemed worth
having a global definition of the interface they are expected to implement.

The abstract base classes are still incomplete, as most of the interface
is used by the database objects during the cataloguing and tiling process,
and these have not been implemented yet.

new file:   dataset_interface.py - defines abstarct base classes for
    dataset and band_stack objects.

ama-jharrison/agdc,jeremyh/agdc,smr547/agdc,smr547/agdc,jeremyh/agdc,sixy6e/agdc,alex-ip/agdc,alex-ip/agdc,GeoscienceAustralia/agdc,GeoscienceAustralia/agdc,sixy6e/agdc,ama-jharrison/agdc