Implement content-type HTTP header enforcement

This CR will enforce the HTTP header content-type values for the following
barbican resources:

=============  =========   ========================
Resource       HTTP Verb   Enforced Content Types
=============  =========   ========================
Secret         PUT         application/octet-stream
                           text/plain
Secrets        POST        application/json
Orders         POST        application/json
Containers     POST        application/json
TransportKeys  POST        application/json
=============  =========   ========================

Violators will receive an HTTP 415 if they pass in an unexpected
content-type header value.

The expected values are specified in a new decorator,
enforce_content_types which takes a list of expected content
type values and will verify that the API was called with
one of those.

For example, the on_put method for secret resource now has this
decorator which indicates two content type header values that
are valid for PUT method on the secret resource.

    @controllers.enforce_content_types(['application/octet-stream',
                                       'text/plain'])

Change-Id: I4df7cc37254764bf7544bbca14875d18865b6a2f
Implements: blueprint barbican-enforce-content-type
Bug fix 1336995 DateTime type only accepts Python

Closes-Bug: #1336995

Change-Id: Icd8e3b0474de9cf6aca253692176fc56953c6581
Merge "Bug fix 1336995 DateTime type only accepts Python"
Merge "Implement content-type HTTP header enforcement"