Support static nested groups in LDAP

This refers to groups that have member: <another group DN> as an attribute
- Add in a utility method in the SpringSecurityLdapTemplate to retrieve multiple attributes and their values from an LDAP record
- Make the DefaultLdapAuthoritiesPopulator more extensible
- Add an LdapAuthority object that holds the DN in addition to other group attributes
- Add a NestedLdapAuthoritiesPopulator to search statically nested groups
Yes, in [other places](https://github.com/spring-projects/spring-security/blob/3ba1f66f9d76813dcd09e18296884c494efdf387/ldap/src/integration-test/java/org/springframework/security/ldap/AbstractLdapIntegrationTests.java#L29) we hard code 127.0.0.1 as the LDAP URL. But the above code could bind to ::0 if that is the default localhost and will not listen to 127.0.0.1. This aligns the listen address with the request address.