Implement events pagination, sorting and filtering

It supports pagination(limit and marker),
sorting(sort_keys and sort_dir) and filtering(filters) of
the results for events-list.

Implements blueprint events-pagination

Change-Id: I1892d0c19d0c6355bb5c88e4a0bc4daa59460b72
Implement keystone client plugin

This moves the client creation code out of Clients._keystone() into
its own client plugin.
This is the last client to convert to a plugin, so supporting code
to fetch a client from a non-plugin has been removed.
In a later change it would be worth considering moving methods
in heat_keystoneclient.KeystoneClient into KeystoneClientPlugin
so that calling Clients.client('keystone') returns the actual keystone
client rather than a wrapper.

The barbican TestClient has been removed; it had limited practical
value since it mocked all of the internal calls of the method it was
testing.

Change-Id: Ie4a616d6a2b056fe59877e2bec325f02b6d7a693
Merge "Implement keystone client plugin"
Store clients in context

Having the Stack create the Clients object means that custom constraints
do not have access to the already created clients. This greatly
complicates test mocking, and results in unnecessarily created
constraint-scoped clients.

This change makes the Clients be created in RequestContext on demand.
Constraints use the Clients associated with the context.

Mocking client create calls is simplified, generally needing to
call _create once instead of MultipleTimes()

Change-Id: If22f3258aa9ff906bd60977cc9c2752f18c11c65
Merge "Implement events pagination, sorting and filtering"
Merge "Store clients in context"