luigi grep utility.

Utility to search the luigi API using a prefix or a status.
Merge pull request #71 from jcrobak/luigi-grep

luigi grep utility.
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
Merge remote-tracking branch 'upstream/master'

* upstream/master:
  better logging output for hive targets
  Fixes MetastoreClient.table_exists for partitions
  Fixes errors in handling already existing files on . Also adds unit test to test this functionality
  Add context manager for Mock.open().
  Adds callback when new tracking_url is found
  HiveQueryTask automatically creates parent directory of output if it doesn't exist.
  luigi grep utility.
Merge branch 'master' of github.com:iheartradio/luigi

* 'master' of github.com:iheartradio/luigi:
  console entry point + test
  cli.py does not need to be executable