[feature/crypto] Add basic implementation of crypto manager

The crypto manager is capable of checking and hashing passwords. It will
support different hashing algorithms.

PHPBB3-11610
[feature/crypto] Add service collection file crypto.yml

This will contain definitions of the services and the service collection
that will be passed to the crypto manager.

PHPBB3-11610
[feature/crypto] Add helper functions, i.e. for combined hashes

Combined hashes can be used for i.e. converting already existing
password hashes to bcrypt. While this will not provide the same security
a pure bcrypt hash provides, it will still be significantly more secure
than a standard salted md5.
A combined hash will look as follows:
$H\2y${salted_for_H_prefix}${salt_+_settings_for_2y_prefix}${hash}
The prefixes are seperated by a backslash. Individual settings (which
can include either just the salt or a salt and possible additional settings)
are seperated by dollar signs. As backslashes and dollar signs are not
allowed in hashes or salts, they will be used for seperating the settings
from the salt.

Here is an example of a password hash:
$H\2a$9zv1uIaq1$10\1ff4640409fb96a449c1fO$/oN1O0cdUmFSMZT3UZKrgAyalhnt1LC

The 'H' prefix stands for the salted md5 implementation of phpBB 3.0.
Its settings will be parsed as 9zv1uIaq1 resulting in a hash for the check
as follows:
$H$9zv1uIaq1{hash}
Since the password is used for hashing, the {hash} can be left blank and
will basically be filled by the hashing algorithm. The {hash} will then be
used as password for the next hashing algorithm. In this case that would be
the bcrypt algorithm. The settings are set to 10\1ff4640409fb96a449c1fO which
will be transformed to 10$1ff4640409fb96a449c1fO resulting in a hash like
this for the bcrypt hashing function:
$2a$10$1ff4640409fb96a449c1fO{hash}
The {hash} will again be basically filled by the hashing algorithm.
Afterwards, the {hash} will be extracted from the returned hash and put at
the end of the already known hash settings:
$H\2a$9zv1uIaq1$10\1ff4640409fb96a449c1fO$

If the password is correct, the combined hash will of course be the same
as the stored one.

PHPBB3-11610
[feature/crypto] Add global variable phpbb_container to auth_db

PHPBB3-11610
[feature/crypto] Add crypto driver base class and interface

PHPBB3-11610
[feature/crypto] Add salted md5 (standard phpBB3) and phpass drivers

The phpass driver extends the standard salted md5 driver of phpBB3. It will
only support the $P$ prefix that phpass uses.

PHPBB3-11610
[feature/crypto] Add basic bcrypt drivers for $2a$ and $2y$ prefix of bcrypt

The $2a$ prefix is the basic implementation with the $2y$ prefix extending
that class. However, the default hashes for phpBB should be generated with
$2y$ unless the PHP version is older than 5.3.7.

PHPBB3-11610
[feature/crypto] Default to bcrypt with $2y$ prefix if possible

PHPBB3-11610
[feature/crypto] Use correct prefix for bcrypt type

PHPBB3-11610
[feature/crypto] Correctly supply hash salt and settings to bcrypt hash()

PHPBB3-11610
[feature/crypto] Add convert flag for converting to default hash type

PHPBB3-11610
[feature/crypto] Do not support 8-bit characters with $2a$ bcrypt prefix

8-bit unicode characters might reduce the security of the password hash
when using the $2a$ bcrypt prefix. Those types of characters are usually
not used in passwords but we should prevent this possible issue anyway.

PHPBB3-11610
[feature/crypto] Add basic crypto manager test file

PHPBB3-11610
[feature/crypto] Add crypto driver helper class for additional functions

Functions for the helper class might be used in other drivers as well and
therefore shouldn't be limited to just one driver.

PHPBB3-11610
[feature/crypto] Include crypto driver helper in manager_test

PHPBB3-11610
[feature/crypto] Add crypto driver helper class file

PHPBB3-11610
[feature/crypto] Use common salt generation function for all hash types

We will be using the same method inside the crypto driver helper class
for all hash types. This is the same function that has been used for the
salted md5 hash of phpBB 3.0.

PHPBB3-11610
[feature/crypto] Fix tests for PHP version < 5.3.7

PHPBB3-11610
[feature/crypto] Add tests for crypto_manager check_hash() method

Tests cover all supported hashing algorithms.

PHPBB3-11610
[feature/crypto] Make method get_hashing_algorithm() protected

There is currently no use for it being public.

PHPBB3-11610