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)
Adds callback when new tracking_url is found

Will be used for the TaskHadoopJob table, but I thought it would be
useful separately as well.
Merge pull request #73 from JoeEnnever/tracking_callback

Adds callback when new tracking_url is found
Merge pull request #70 from spotify/freider/auto_create_parent

HiveQueryTask automatically creates parent directory of output if it doesn't exist
Add context manager for Mock.open().

The HdfsTarget's support this, so it makes sense to add to mocks
for compatibility.

Also snuck in a change to gitignore for some MacOS files.
Merge pull request #74 from jcrobak/mock-sb-context-man

Add context manager for Mock.open().
Fixes errors in handling already existing files on .
Also adds unit test to test this functionality
Merge pull request #75 from spotify/freider/mkdir_exists_handling

Fixes handling already existing files in hdfs.mkdir
Fixes MetastoreClient.table_exists for partitions
better logging output for hive targets
Merge pull request #78 from rathboma/master

Minor change -- debug output for hive targets
Merge pull request #76 from JoeEnnever/hive_fix

Fixes MetastoreClient.table_exists for partitions
Fix relative paths in webhdfs.

This fixes relative paths in webhdfs by prepending
the users home dir whenever the path is relative.
Merge pull request #79 from jcrobak/webhdfs-fixes

Fix relative paths in webhdfs.
New luigi task status and graph visualiser (squashed for cleaner history, including commits by lallea, Anders Nyman and Uldis Barbans)
New hand-written layout engine more suited to directed acyclic graphs (like dependency graphs). Backend unit tests now use scheduler directly instead of RPC.
Killed old visualiser and fixed 2.7-dependent tests
Visualiser now fetched error traces from luigi. Failed nodes in graph are clickable for a traceback. Ships with mock data for testing UI in isolation
Added root path handler to redirect / to /static/visualiser/index.html
Merge pull request #80 from DavW/new-visualiser

New visualiser to display failing tasks and dependency graphs