parse group definitions from gitolite.conf

* read_config parses group definitions from gitolite.conf
* this information is returned to the caller both as:
  - group memberships (which user belong to a group)
  - inverse group memberships (which groups is a user member of)

Note: in gitolite groups can be nested. This has not been tested so far,
thus nesting groups might lead to unexpected behavior.

Note: read_config takes the trac environment as input variable. this is
to be able to lug debug messages. this can be removed once the code is
stable.
read_config needs the trac environment as input variable

Note: read_config takes the trac environment as input variable. this is
to be able to lug debug messages. this can be removed once the code is
stable.
check group memberships (perm_policy)

use the group membership information to determine if a user is allowed
to browse a repo.

Note: read_config takes the trac environment as input variable. this is
to be able to log debug messages. this can be removed once the code is
stable.