Add support for groups in security.

A user can be a member of a group or have roles assigned directly.
Groups typically have one or more roles assigned. Users that are part of
that group will get these roles associated too.
Users have the union of the roles associated with the group together
with their own roles. When logging in the user will get RolePrincipal
objects for all of these. The user will also get a GroupPrincipal object
associated for each group (s)he is in.
Groups are currently implemented for the PropertiesLoginModule and
PropertiesBackingEngine. They can be gradually added to other login
modules too.
This commit also contains shell commands to manage groups as well as a bunch
of new tests.

For example the following can be used to set up some users and groups:
  jaas:manage --realm karaf
  jaas:groupadd karaf admingroup
  jaas:grouproleadd admingroup admin
  jaas:grouproleadd admingroup manager
  jaas:grouproleadd admingroup viewer
  jaas:useradd joe joe
  jaas:roleadd joe manager
  jaas:groupadd joe viewergroup
  jaas:grouproleadd viewergroup viewer
  jaas:useradd bo bo
  jaas:groupadd bo viewergroup
  jaas:update
  jaas:manage --realm karaf
  jaas:users

This prints out:
  User Name            Group                Role
  karaf                admingroup           admin
  karaf                admingroup           manager
  karaf                admingroup           viewer
  joe                  viewergroup          viewer
  joe                                       manager
  bo                   viewergroup          viewer



git-svn-id: https://svn.apache.org/repos/asf/karaf/branches/karaf-2.x@1541215 13f79535-47bb-0310-9956-ffa450edef68