Added the LookupGroup method and Group caching

Added a method for looking up Groups instead of User (LookupPrincipal)
Added checks to LookupGroup and LookupPrincipal to limit output to only
correct type
Added ability to cache Groups and also added Users and Groups to the cache
flush