Add support for dynamic requiremnets

Tasks may now yield new requirements in run just as they are returned
in requires. If requirements are fulfilled when yielded the task will
continue, if not it will be rescheduled to be run when requirements are
finished. Note that this means that the task will be rerun from start.
Add dynamic requirement example
Add pyparsing to .travis.yml
Make it compatible with Python 2.6
Make parameter.serialize handle is_list
Change init proceduce for dynamic requirements

It used to be initialized using task_id now it's done using
task_family + str_params.
Add load_task function in interface
Remove id_to_parsable from task.py
Add test for task to str params conversion
Add dynamic dependency test

Also fix import problem where it would try to import worker_test
from luigi/test/test.py due to luigi/test having higher priority
in sys.path and worker_test being located in the test folder.
Merge pull request #424 from tommyengstrom/dynamic

Dynamic requirements
Allows co-scheduling of tasks without dependency

Currently, the only way to guarantee that task B runs whenever we
schedule task A is to make A depend on B. This is not always feasible.
For example, it may already be the case that B depends on A. We may also
want to schedule them together without requiring that one runs before
the other. For this usage, I've added a co_schedule function to Task. If
A.co_schedule() returns B, then B will be scheduled whenever A is
without affecting either of their dependencies.

The main use case I have is to schedule automatic cleanups. Currently, I
have a setup where I'll have one mapreduce task M, with many consumers
C1,...,Cn that each depend on M. I then have a purge task P that depends
on C1,...,Cn which removes all of M's output after all the consumers
have used it. This works fine normally, as I regularly schedule P going
forward. It causes problems when someone creates or changes a consumer
Ci and has to do a backfill. When Ci is run, we end up running M but not
P, so we're left with a lot of garbage at the end of the backfill which
won't necessarily be cleaned up by my regularly scheduled tasks. To fix
this, we set M to co-schedule P. Now when I backfill Ci, P will be
scheduled as well and I won't be left with any cruft.