[TASK] Don't use destructor as shutdown function

GeneralUtility::makeInstanceService() registers service classes'
destructors as shutdown functions. This has two drawbacks:
* destructors are called twice usually
* service classes need to have destructors

The shutdown function for temp file cleanup in AbstractService is
registered on demand instead.

Change-Id: I0c41d821dc2279eeb126badf306f73d3b53b3010
Resolves: #52463
Releases: 6.2
Reviewed-on: https://review.typo3.org/24277
Reviewed-by: Sascha Egerer
Tested-by: Sascha Egerer
Reviewed-by: Markus Klein
Tested-by: Markus Klein