[FLINK-1266] Generalize DistributedFileSystem implementation

to HadoopFileSystem wrapper, which supports all subclasses of `org.apache.hadoop.fs.FileSystem`.
This allows us to let users use all file systems with support for HDFS.

The change has been tested with Tachyon, Google Cloud Storage Hadoop Adapter and HDFS. (I also contributed again to Tachyon)

The change also cleans up the Hadoop dependency exclusions.
I also found a nice little "bug" in the Instance class.
The name is confusing because most Java classes prefixed with "Abstract" is actually defined as an abstract class rather than interface. 
Maybe change it to just HadoopWrapper instead.