Fix Exception marshalling with JSON serializer
The code in `drain_events` in `amqp.py` naively sets the result dict
to a plain meta dict without transforming the dict structure back into
an actual Exception through `exception_to_python`.
When a task raises an exception, `AsyncResult.get` tries to raise the
exception, which is actually still a dict and fails with:
```
TypeError: exceptions must be old-style classes or derived from
BaseException, not dict
```
This patch makes `drain_events` call `meta_from_decoded` which is
responsible for that, just like it is called in `get_many`. Then,
raising the exception in `AsyncResult.get` works fine.
To reproduce, see the testcase in #2518. Then, apply the patch and see
stuff start to work again.
closes #2518