Return HTTP 400 if content-md5 header does not match

Fixes #596

Respect content-md5 headers on object uploads and return HTTP 400 with
appropriate error body when it does not match the calculated digest of
the object body. Also refactor the handling of content-md5 headers for
multipart part uploads so that is matches the handling for normal
object uploads.