Make OS-FEDERATION core.Driver methods abstract

Not all methods in contrib.federation.core.Driver are decorated
with @abs.abstractmethod. This patch adds missing decorators.

Change-Id: I93962110134d4b9062a75c228760333403a4f7eb
HEAD responses should return same status as GET

According to the HTTP spec, a HEAD request should return the same
status and headers as the GET request (including content-type and
content-length). The HEAD request simply strips out the body and
returns no body. Any case where HEAD routing returned a different
status code than GET, now returns the same status and headers.

Any case where HEAD was supported where GET was not supported now
supports both GET and HEAD.

The wsgi.render_response code now handles HEAD appropriately and
will maintain headers while enforcing no body data is returned.

The bulk of this change is to support the same behavior between
deploying Keystone under eventlet and under HTTPD + mod_wsgi. In
the case of deploying under HTTPD + mod_wsgi, there are cases
where mod_wsgi will turn a HEAD request into a GET request to
ensure that the proper response is rendered. With these changes
all HEAD responses will respond in the same manner under either
eventlet or mod_wsgi.

Change-Id: I13ce159cbe9739d4bf5d321fc4bd069245f32734
Closes-Bug: #1334368
Correct the region table to be InnoDB and UTF8

The region table was not specified as being InnoDB or UTF8 under
mysql initially. The migration will fail if the defaults for MySQL
are not set correctly. A new method has been added to the
migration_helpers module to detect and correct the InnoDB / UTF8
specific issue with the region table.

Change-Id: I374c3dd46a4292e8f9e74ef75a8bb463b951f135
Closes-Bug: #1334779
Merge "Correct the region table to be InnoDB and UTF8"
Merge "Make OS-FEDERATION core.Driver methods abstract"
Merge "HEAD responses should return same status as GET"