[SECURITY] Refactor and fix FAL user permission handling

* User permissions are only applied to storage objects
  that are attached to a member variable of
  BackendUserAuthentication. This is error prone
  and leads to insufficient (no) checks if the code
  fetches a storage directly from the factory
  (like edit document controller does)
  Instead, apply the permissions by using a signal
  in StorageFactory directly after the storage object
  is built.

* Refactor the mount point handling, especially the
  user and group home directories, which was completely
  broken after the introduction of FAL. File mounts
  are now also applied to the storage on creation.

* Make fallback storage 0 read only and not browsable.

Change-Id: I5987cc760581f8dabd12b6f0162645eaa687edea
Fixes: #51327
Releases: 6.2, 6.1, 6.0
Security-Commit: 5460c76e1373698bde82883ab4087607fee5e6f5
Security-Bulletin: TYPO3-CORE-SA-2013-003
Reviewed-on: https://review.typo3.org/23603
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
[SECURITY] Deny arbitrary code execution possibility for editors

Because the filename is sanitized in the driver
after the check for denied file extensions is
performed, it was still possible to rename files
with denied file extensions.

We now perform the file extension check
on the final filename which is going to be used
by the driver.

This change makes the sanitizing method public
and introduces a basic implementation in
AbstractDriver to not break existing driver
implementations.

Change-Id: I74b3596e194e79135d7affa3111b3f9e40a72693
Fixes: #51495
Releases: 6.2, 6.1, 6.0
Security-Commit: d9aa75ad0169e90065656ca78b19ab966d1c76c1
Security-Bulletin: TYPO3-CORE-SA-2013-003
Reviewed-on: https://review.typo3.org/23604
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
[SECURITY] Identifiers may refer to resources outside the storage

The Driver needs to canonicalize all incoming identifiers at first,
and than check for their validity on every action performed.
If a canonicalized path resided inside a storage it does not contain
any ../ anymore.
An exception is thrown in that case.

Change-Id: I4b11034e2adc98c9a5b7ebeddbe3c8ee54df16b5
Releases: 6.2, 6.1, 6.0
Fixes: #50883
Security-Bulletin: TYPO3-CORE-SA-2013-003
Reviewed-on: https://review.typo3.org/23605
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader