By using a hash instead of the issue number as array key, no file gets
lost any longer due to collision. Same issue numbers for documentation
files are quite common, e.g. when a new feature deprecates replaced code.

- Always check for existing response
- If HEAD request fails, a GET request should always be triggered
- Restructured, moved some local variables to class variables
- In case of redirect loop, output exception message instead of
location and status code

When entering the Install Tool and the GFX/processor is set to
GraphicsMagick the value for GFX/processor_effects is reset to -1,
overwriting any value that might have been set before.
Also adjust tests for the new expectations.

The FormElementHooks now uses the correct namespace
for the generated error.

The TranslateElementErrorViewHelper requires the submitted
error to be an instance of TYPO3\CMS\Extbase\Validation\Error.
The error was an instance of TYPO3\CMS\Extbase\Error\Error.
As the instance was wrong, an exception was thrown.

Using the second parameter of TBE_EDITOR.rawurlencode cuts the input to
200 characters for any input value. The parameter is rather useless and
its usage can be simply removed to allow URLs with more than 200
characters.

To improve the overall performance of the recycler, these things are done:

- Improve how permissions are checked for each record
Instead of running multiple SQL requests per record, the check now
instantly stops if the user is either an admin, or has no permission
to modify a certain table.

- Drop sorting of records by page tree structure
The records get sorted by the page tree structure, to mime the tree in
a flat view. However, this feature is rather useless and also
considered buggy in a huge record set.

The new IpAnonymizationAdditionalFieldProvider introduced the same
JavaScript variable which breaks the garbage collection task.
The JavaScript initialization has been removed and the field provider
simplified.

Currently only the DriverInterface cares about applied filters.
The ResourceStorage received a new API function to validate a file or
folder object against applied filters as well. This ensures proper
validation for objects fetched without driver calls.

When useOrOverridePlaceholder mode is used for TCA input type,
use opt-in for the checkbox when placeholder is empty.

In some cases, the placeholder can be empty. Especially when the
placeholder uses data from another field. When information is added
to the corresponding field, the input field does not take this in account
because the override checkbox is set by default.

This can lead to problems for title and alternative fields in the
sys_file_metadata table. When adding a file reference and setting the
title or alternative field afterwards in the original file, the reference
is still using the empty override from file reference.

If the class of a registered task is missing, e.g. because the related
extension has been removed, the task itself will be unserialized into
an __PHP_Incomplete_Class object. Checking the task execution is an
invalid access in this case and must be avoided for such tasks to be
deleted.

The styling for broken page links that was added in
RteHtmlParser::markBrokenLinks is by default removed by ckeditor
so this functionality is no longer available by default.

Page links which link to a non-existing page currently already
get the additional attribute a[data-rte-error]. This patch adds
CSS to visually style broken links with a red border and yellow
background. This is the same styling that was previously used.

This is done by adding the plugin showbrokenlinks.

The style is still added in markBrokenLinks. These attributes
will be removed by ckeditor by default. However, the functionality
is kept to function as fallback.

There were some advanced search fields in indexed search that
disappeared after the last update.

In SearchController, method processExtendedSearchParameters, there were
some non-existing variables that were used in some conditions.
With this patch, those variables are initialized before the conditions
and all the advanced search fields in indexed search are shown again.

The additional isINTincScript check stems from the time
where this code was in a separate file, which
was included two times and page generation should be
skipped for the second inclusion. As INT scripts are only generated
during page rendering (or when fetching the page from cache)
we can safely remove this condition now.

Additionally, we can now easily get rid of the elseif
and move the page rendering preparation directly
after the same condition is checked later in the code flow.

This is fine, because this code does not need to be
executed before the lock is released. Last but not least
we clean up admin panel messages to clearly distinguish
between page generation and rendering preparation.

As this is a pure non breaking cleanup, this can
safely go into 8.7 branch as well.

[BUGFIX] Compatibility for finishers which set content into the response

Since #83822 EXT:form makes usage of the controller context
response object which has impacts to the finisher logic which was not
treated by #83822.
Since #84495, finishers with output can return this as string instead
of setting this directly into the response
(which results in a double output).
This patch ensures that existing custom finishers which set the content
into the response, get respected.