OmniAuth: optional attribute mapping in strategies

OpenProject currently employs a fixed attribute mapping schema for
userdata extracted from OmniAuth::AuthHash.

For some strategies (e.g., LDAP), various attribute names are used to
determine user attributes. Thus, an override to the fixed mapping from
within a strategy is desirable.

This commit allows the attribute mapping hash to be merged with
attribute overrides from within an OmniAuth strategy.
Added spec for OmniAuth strategy attribute mapping
Test response for forbidden WP attributes
Check update attribute constraints
Test work package update for valid attributes
WP update implementation
Test that API throws validation error
Set writeable WP attributes
Prevent double loading of API helpers
Test API V3 error response in regard to the specification
Implement API V3 error handling according to the specs
Refactor tests of API V3's anonymous user behavior
Use representer to render errors
Remove superfluous error handling
Test error response for write access to read-only attribute
Implement response to write access to read-only attribute
Change unauthenticated access error identifier
Fix check update attribute constraints
Let the error representer handle the error identifier
Test response for multipe read-only errors