FIX: Edge case attempting to destroy uninitialized tabs

Another edge case very similar to
https://github.com/silverstripe/sapphire/commit/07fb7563273fa82bd93eb255
70571c0a298198e5
Fix: RequestHandler not managing 404/403 errors correctly (fixes #1696)
Merge pull request #1741 from kinglozzer/1696_handlerequest_fix

Fix: RequestHandler not managing 404/403 errors correctly (fixes #1696)
Update configuration.md

Link to ssbits.com config cheatsheet no longer relevant.
Merge pull request #1744 from ryanwachtl/patch-1

Update configuration.md
Merge pull request #1739 from kinglozzer/leftandmain-uninitialized-tabs

FIX: Edge case attempting to destroy uninitialized tabs
BUG Fixed broken ErrorPage icons in CMS view
Merge pull request #1746 from tractorcow/3.1-errorpage-icons-fix

BUG Fixed broken ErrorPage icons in CMS view
DateField.js event selector regression (fixes #1528)

See 19a8545076f477d15aa5ed7fe52af020f43d28ab
Revert deprecation of Object::add_extension() usage

This reverts commit 14b997eea3c2a541fe842025b4f7ff76bd74fba9.
Its just not practical to use the Config API as it stands,
the add_extension() wrapper does more than just a Config->update().

Most use cases can be covered via YML, but any conditional
additions (e.g. in unit tests) can still benefit from the
add_extensions() shorthand.
API: used call_user_func_array in order to have an arbitrary number of parameter for getFormattedImage (fixes #1752)
Merge pull request #1753 from g4b0/1752-image-manipulation-parameter

API: used reflection in order to have an arbitrary number of parameter