Require Class['mysql::server'], not Service['mysqld'] when creating DB.

When using version >= 2.2 of the MySQL module, setting up
the database for Keystone depended on the MySQL service
(Service['mysqld']). However, if the service is not managed
by Puppet (e.g. it is managed through Pacemaker instead),
this would cause catalog compilation to fail because there
is no Service['mysqld']. This is the case when the MySQL
module is called with service_manage => false. Requiring
Class['mysql::server'] instead fixes this.

Change-Id: Ia1b34051dd6e4fc0916ac788d6027c1f987418a8
Closes-Bug: 1349316
keystone_user_role supports email as username

When defining the keystone user with the email address, the keystone_user_role doesn't handle it correctly.

user: "user@example.org"
tenant: "test"

keystone_user_role { "user@example.org@test":
  roles = '_member_'
}

Because of the use of the split('@',2) method, user and tenant will be parsed as:
  user: "user"
  tenant: "example.org@test"

By using rpartition('@'), it will be correctly parsed as:
  user: "user@example.org"
  tenant: "test"

A unit test for the keystone_user_role provider is available.

Change-Id: I68139910bb82c62f26ba3433456e5406c99541a2
Closes-Bug: 1341552
Merge "keystone_user_role supports email as username"
Fix usage of admin_endpoint

The admin_endpoint in keystone.conf is used
to advertise for service discovery to a client, and
should not contain the identity version as this will
be appended based on which versions are available.

This patch changes the behavior of the native types that
depend on admin_endpoint and the service validation to
accept a url without a version appended. In both cases,
the version will be set to v2.0, as there is no suitable
conf option in keystone.conf from which the available
versions can be deduced. This allows the correct, versionless
admin_endpoint to be set in keystone.conf for the service
itself.

Change-Id: I0c1ebd9f1cf452828698555e7c642fac770aa73f