Allow job ID to be set on enqueue/enqueue_call() - fixes #412

Fixes #412.

Includes unit tests and is backwards compatible. 

There is a small/minimal risk to enqueue(), for anyone already passing `job_id` as a custom task attribute when calling enqueue(), as it is treated with the same "specialness" as `result_ttl", e.g. it is popped off the `kwargs`.  This is an unlikely edge case, but let me know if you think this is unacceptable.

There is no risk for enqueue_call().
I've added `flake8` compliance as part of the test suite. This isn't run on our CI (Travis), but it gets run when you run `tox` locally.