custom user name validation pattern, customizable messages on login failure

- customized messages for invalid username and bad credentials (new parameters: message_invalid_user, message_bad_credentials)
- custom username validation pattern (regex) via config paramter (username_validation_pattern)
- function loadUserByUsername() now throws UsernameNotFoundException() on invalid username
- function getUsernameFromString() returns null value instead of throwing InvalidArgument exception