Add an optional caching mechanism for loadUserByUsername and loadGroupByGroupname

- Caching is usually not recommended
- Where the LDAP server is slow, or rate-limits clients however, by trading off memory required on the master JVM
  improved performance can be observed with caching enabled.
- Large long-TTL caches will most likely require the JVM memory on the master be increased to compensate for the cache population