(SERVER-39) Allow a certificate to be passed into a request via X header

This commit adds the ability for a certificate to be supplied in a web
request as the payload of a custom HTTP header, X-Client-Cert.  The
header will only be parsed for a value if the `allow-header-cert-info`
master setting is set to true.  When the certificate is retrieved, it
will be supplied as the client certificate to the Ruby request handler
stack, as a direct replacement for a certificate object that would be
typically be provided over SSL.
(SERVER-39) Addressed PR feedback

This commit addresses initial feedback in the PR, including:

  * Use `with_open` to ensure `StringReader` for decoded cert is closed
    when finished

  * Added missing value to comparison in bad request test
(SERVER-39) Addressed more PR feedback

This commit addresses additional feedback from the PR review, including:

* Using namespace for slingshot type
* Replacing use of `thrown-with-slingshot?` with `thrown+?` and put test
  assertions inline for easier identification of the point of failure
(SERVER-39) Addressed more PR feedback

This commit includes the following changes:

1) If the `allow-header-cert-info` setting is true, only the client
   headers will be processed for client cert and DN values.  The previous
   commit would have allowed these values to be set from an SSL-provided
   certificate if one were available on the request and not superceded by
   the client headers.

2) If more than one certificate is present in the `X-Client-Cert` value
   and `allow-header-cert-info` is true, a 400 Bad Request error will be
   thrown.  The previous commit would have allowed the first certificate
   from the chain to automatically be selected and used as the end client
   certificate for the request.
Merge pull request #233 from camlow325/feature/stable/SERVER-39-allow-certificate-via-x-header

(SERVER-39) Allow a certificate to be passed into a request via X header