Unify StringIO usage with six.StringIO

Python 3 doesn't include StringIO.StringIO, but includes io.StringIO.
To unify StringIO usage, use six.StringIO instead.

See http://pythonhosted.org/six/#six.StringIO

Part of blueprint keystone-py3kcompat

Change-Id: Ieb03821ef6be2195ea2d58445de507dadee7e3d2
Allow event callback registration for arbitrary resource types

In some cases events should still be able to be registered for
resource types that have not been explicitly defined due to an
extension not being loaded or active. The if-check to raise
a ValueError if the ResourceType has not been explicitly
defined by a @dependancy.provides line has been removed.

Change-Id: I9fb368c5734a4a560a4bdd97d4467e2f76ca0e5c
Merge "Allow event callback registration for arbitrary resource types"
Merge "Unify StringIO usage with six.StringIO"
Use six.text_type to replace unicode

unicode only exists in Python 2. Use six.text_type to make code
Python 3 comaptible. See http://pythonhosted.org/six/#six.text_type

Part of blueprint keystone-py3kcompat

Change-Id: I044036708b1fc6190647abce699e6898b274d487