Use the new build env on Travis

faster vms, more ram, more cpu, faster boot times,

docs coming soon
cat an error log if it fails
Allows RemoteContext to be used in dicts

This implements equality and hash functions for RemoteContext so that it can be
used as a dictionary key. This was necessary for me to cache the output of a
function that took in a RemoteContext to check remote directory contents.
Merge pull request #539 from joshk/patch-1

Use the new build env on Travis
only chmod if pid file is owned by current user

I ran into the same issue that #497 was trying to fix, but I don't think
the merged solution will work. The problem is that the old pid file is
owned by the previous user(abc123 in #497) and thus, the file cannot be
removed by the new user (xyz789). A solution is to check if the current
user owns the file and only performs the chmod if that is the case.

Squashed commit of the following:

commit 80acee57966998fe0781f4a3263440e6a2c21bef
Author: Sajan Alexander <sajana@spiceworks.com>
Date:   Mon Nov 24 09:33:01 2014 -0600

    use uid, not gid

commit 1c954afdc452df57c282a19377ce13e26930d9c8
Author: Sajan Alexander <sajana@spiceworks.com>
Date:   Sun Nov 23 17:11:59 2014 -0600

    remove removal of pid file since permission error still exists

commit f5cb7a8a113d43d4ae0050fa4380c90db243b45b
Author: Sajan Alexander <sajana@spiceworks.com>
Date:   Sun Nov 23 16:47:26 2014 -0600

    make sure existing pid file is owned by the current user
Merge pull request #544 from spiceworks/master

Removal of pid file can cause error
Merge pull request #541 from Houzz/remote_context_hash

Allows RemoteContext to be used in dicts
Add sendgrid email support
Allows complete functions to be computed in parallel during scheduling

I've noticed that most of the time spent during scheduling is spend computing
complete functions, as these can involve various kinds of expensive checks
against remote file systems and services. This modifies the add function in
worker to allow complete functions to be computed asynchronously while
traversing the dependency graph. This can result in significant savings,
lowering the time needed for my twice-hourly scheduling from about 9 minutes to
about 3.5 minutes.

Using multiprocess requires picklable tasks, and this is incompatible with many
of the unit tests in worker_test. In order to get around this issue and allow
maximum compatibility with client code, multiprocess is not used at all unless
enabled via the command line or client.cfg. In order to minimize the code
difference between these cases, I added wrapper objects simulating the necessary
pool and queue interfaces for the single-processor case. This also allows the
existing unit tests to test most of the new code path, and I've only had to
write a few new unit tests to exercise the multiprocessing code.
Set stacklevel to 2 in Derived and Copy helpers.

Currently, the warning messages are not helpful.

For example, without the patch applied the output is:

/home/berker/projects/luigi/luigi/util.py:209: DeprecationWarning: Derived is deprecated, please use the @inherits decorator instead
  warnings.warn('Derived is deprecated, please use the @inherits decorator instead', DeprecationWarning)

With patch applied:

t.py:9: DeprecationWarning: Derived is deprecated, please use the @inherits decorator instead
  class MyTask(luigi.util.Derived(AnotherTask)):
Add travis build image to README.rst

It's impossible to see if the current travis build is building or not. I had to waste time looking up the status when I was reviewing #549
Convert isinstance assertions to TypeErrors.

Using assert statements can cause subtle bugs when Python
interpreter invoked with the -O option..

See https://code.djangoproject.com/ticket/23924 for an example report.
Merge pull request #551 from spotify/arash/add-travis-build-image

Add travis build image to README.rst
Merge pull request #549 from berkerpeksag/remove-asserts

Convert isinstance assertions to TypeErrors.
Remove unused imports.
Merge pull request #552 from berkerpeksag/unused-imports

Remove unused imports.
Improve CLI example.

It would be good to be able to just copy/paste and run the example
locally.

This commit also improves the markup a bit.
Read whole content instead of iterating all lines to
generate long_description.

Also, use a ``.. note::`` directive.
Merge pull request #554 from berkerpeksag/improve-setup

Read whole content instead of iterating all lines to generate long_description.
Found a mistake in the documentation example for using HdfsTarget. It's calling it from luigi.HdfsTarget instead of luigi.hdfs.HdfsTarget