Experimental Plural Translation Implementation

Personal BACKUP
Merge branch 'master' into feature/translation-plurals-6982
Implement plural translation (testing)
Implement plural and context based translation functionality

refs #6982
Extend TranslatorTest with new tests

refs #6982
Update module/translation documentation

refs #6982
Merge branch 'feature/translation-plurals-6982'

resolves #6982
Introduce `User::can()' for checking whether a user has a given permission

The authentication manager already has the `hasPermission()' method but it lacks wildcard support
and uses stupid looping. Implementing this method on the user further saves a call to `User::getPermissions()'.
Use `User::can()' in `hasPermission()' of the authentication manager
autologin: Don't use `count()' for is empty checks

Using `count()' in favor of `empty()' for empty checks on arrays is bad habit.
While there's literally no performance gain in the "fixed" scenario, there's one on large arrays
and thus should be avoided everywhere.

refs #6462
autologin: Fix externally-authenticated users still being authenticated after external authentication is disabled

The if condition for revoking authentication if the username changed relied on having the `$_SERVER' variable set which was used for authentication.
Authentication is now revoked if the username changed or external authentication is no longer in effect.

refs #6462
Merge branch 'master' into bugfix/commands-6593
bootstrap: Fix error reporting level not including E_STRICT
form: Fix dynamic submit label retrieval
monitoring/commands: Use translate plurar in the object command forms

refs #6593
Fix `Form::isSubmitted()' for dynamic submit labels
monitoring: Support host and service filters for downtimes

refs #7278
The stupid `DbQuery::isTimestamp()' hack must return false

This a fix for modules using our query / filter combination since `return $this;' renders all columns as timestamps.