As some setups don't have email addresses setup or reuse email
addresses, the keycloak search has to be done by username as that
is guaranteed to always be unique and defined.
This PR changes that.
If no attributes are set, the attributes property is nil. This
causes a panic if keycloak has no custom attributes.
This patch checks for nil before accessing the attributes.
This PR adds the keycloak package, which contains the following:
* More genericised functions for the invitations backend.
* User query functions.
* PII query functions.