Locates the user based on the username. In the actual implementation, the search may possibly be case
insensitive, or case insensitive depending on how the implementaion instance is configured. In this case, the
UserDetails object that comes back may have a username that is of a different case than what was
actually requested..
Parameters: username - the username presented to the DaoAuthenticationProvider a fully populated user record (never null) throws: UsernameNotFoundException - if the user could not be found or the user has no GrantedAuthority throws: DataAccessException - if user could not be found for a repository-specific reason