6. core: Introduce new authentication interfaces

This change introduces new authentication and directory interfaces that
represent the connection between the engine and generic authentication
and directory services, like LDAP, for example, but without the LDAP
specific concepts that we currently use.

Note that at the moment the new classes introduced by this change are
not used anywhere, they are intended to make the engine less dependent
on LDAP concepts, but that will happen in other changes.

Note also that this change doesn't introduce any implementation of the
interfaces, that will come in other changes as well

Change-Id: If84a0c9d6553d81cdbbe224972696f169cca90d4
Signed-off-by: Juan Hernandez <juan.hernandez@redhat.com>
Signed-off-by: Yair Zaslavsky <yzaslavs@redhat.com>