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
making them final would make it impossible to extend this class and replace the Ldap template without having to rewrite the code. Currently the LDAP template is instantiated in the constructor. 

This allows this class to be extended and by simply overwriting the getLdapTemplate() method. a sub class of the DefaultLdapAuthoritiesPopulator can swap the the template and still benefit from the methods within.

Making it final doesn't change this implementation, but it does restrict future implementations down the line. So is there a benefit making it final? Why would you not want the method overridden?