HiveQueryTask automatically creates parent directory of output if it doesn't exist

Previously, an `INSERT OVERWRITE` would fail if the parent directory didn't exist.
As part of this, I started working on a more generic file system abstraction for the local
file system in addition to the existing one for HDFS (`HdfsClient`)