Modify Task class constructor to also take "parallel" and "serial" argument

Currently, if you want to control a value of a `serial` and `parallel` attribute on the` Task` object, you need to manually set it on the instance instead of passing it to the constructor.

This branch allows you to pass those two arguments to the `Task` class constructor. For backward compatibility reasons, they default to the same value as the values read in the `requires_parallel` method.

On top of that, I also removed `*args, **kwargs` from the method signature. Previously, the constructor would quietly swallow and ignore other unsupported args and kwargs you pass in (this makes for a bad API and developer experience).