Optimizations

Flower is currently creating one extra object for every task, this change will avoid doing that and instead use the underlying task object to access the fields.

I have also made some optimizations to events.state, both for better memory usage and reduced runtime:
celery/celery@e0b4a305e0de639eb2d8ae206ef74c36cbf67ab7
celery/celery@e1be15cd79f4ad6ea75e48021b70fbac51fdb2af