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
Marking the methods as final helps when we need to do refactoring and keep things passive. If we needed to override the method then there would still be a reference to an unused LdapTemplate object left around which is certainly not ideal. If we want to allow overriding the LdapTemplate, we can introduce a constructor that allows injecting the LdapTemplate.