cleanup Reader instantiation

I intend to:

1. rename `all_tasks` to `tasks`
2. make `tasks` a kwarg with a default of `None` (it will no longer have the same position)
3. in `__init__` if `tasks is None` that's OK
4. add a method `add_tasks()` which accepts a `dict` and performs the assertions currently in `__init__`

This way you can:

```python
rdr = nsq.Reader(topic, channel)
task_method = functools.partial(task_method, reader=rdr)
rdr.add_tasks({"handler": task_method})
```

Consider this the official warning :fire: :facepunch: :heart: