bug: proxy headers aren't forwarded properly

The proxy currently forwards headers in WSGI format,
e.g. 'Content_Length', vs. 'Content-Length'. This breaks any standards
conforming HTTP server that's placed in between the proxy and
marconi-queues endpoints (for partitioning). This patch cannonicalizes
headers before they are forwarded to resolve this issue.

Change-Id: I1eab83dbb1fb9cfec5d15d40830e383da4e6591e
feat(api): give validation resp a different title

HTTPBadRequestBody should only be used to indicate the errors
with content body, while input validation errors should be
regarded as violations on API calling conventions.

Change-Id: I23990f58ff3233fe1cf4febad77efe0173027a33
feat(api): Client-ID as a real UUID

We store the UUID in binary form in DBs, and perform checking
on user inputs.  Compared with the hex form we currently using,
the binary form saves half space to store.  In addition, by
enforcing UUID on the server side, we can minimize the chance of
client ID collision.

Change-Id: Ic3048a0d2aa21bd201e2d2d9cd8a562662cf8f8e
Closes-Bug: 1233420
Merge "feat(api): give validation resp a different title"
Merge "feat(api): Client-ID as a real UUID"