UP-4177 Add groovy-based duplication of username to user.login.id and uid if not present

https://issues.jasig.org/browse/UP-4177

Upgrades to person-directory 1.6.0 to enable groovy-based scripts or classes in personDirectoryContext.  See https://github.com/Jasig/person-directory/blob/person-directory-parent-1.6.0/person-directory-impl/src/main/java/org/jasig/services/persondir/support/GroovyPersonAttributeDao.java#L38

Though could be done with PersonDirectory's StringFormatAttributeRule, this approach is MUCH GROOVIER!

Additional benefits to uPortal:
- uportal-war build process now support groovy classes AND Groovy unit test classes!!!
- can use groovy scripts in personDirectoryContext.xml (see link above)
The semantics of this implementation feel weird.

If the existing user attributes include a key that ought to be duplicated, then it returns *the superset* of the existing attributes plus the duplicates.

If the existing user attributes do not include the key that ought to be duplicated, then it returns `null`.  Whereas I guess I'd have expected it to return the existing attributes unchanged, since that's what it's doing with the existing attributes in the case where there was work to do.