## Description

Fix `Task.handle_failure` not wrapping the exception correctly in case of unpicklealbe exceptions.

Other changes:
* add the traceback object too when wrapping an unpickleable exception
* added tests to ensure that `Task.handle_failure` and `Task.handle_retry` work as expected

This work is a continuation of the fixes I made in https://github.com/celery/celery/pull/8133.

<!-- Please describe your pull request.

NOTE: All patches should be made against main, not a maintenance branch like
3.1, 2.5, etc.  That is unless the bug is already fixed in main, but not in
that version series.

If it fixes a bug or resolves a feature request,
be sure to link to that issue via (Fixes #4412) for example.
-->

Fix `Task.handle_ignore` not wrapping exceptions properly. ## Description

Fix `Task.handle_failure` not wrapping the exception correctly in case of unpicklealbe exceptions.

Other changes:
* add the traceback object too when wrapping an unpickleable exception
* added tests to ensure that `Task.handle_failure` and `Task.handle_retry` work as expected

This work is a continuation of the fixes I made in https://github.com/celery/celery/pull/8133.

<!-- Please describe your pull request.

NOTE: All patches should be made against main, not a maintenance branch like
3.1, 2.5, etc.  That is unless the bug is already fixed in main, but not in
that version series.

If it fixes a bug or resolves a feature request,
be sure to link to that issue via (Fixes #4412) for example.
-->

setuptools>=40.8.0
wheel>=0.33.1
flake8>=3.8.3
flakeplus>=1.1
flake8-docstrings~=1.5
pydocstyle==6.1.1; python_version >= '3.0'
tox>=3.8.4
sphinx2rst>=1.0
# Disable cyanide until it's fully updated.
# cyanide>=1.0.1
bumpversion==0.6.0

setuptools>=40.8.0
wheel>=0.33.1
flake8>=3.8.3
flakeplus>=1.1
flake8-docstrings~=1.5
pydocstyle==6.1.1; python_version >= '3.0'
tox>=3.8.4
sphinx2rst>=1.0
# Disable cyanide until it's fully updated.
# cyanide>=1.0.1
bumpversion==0.6.0
