Use Factory->makePeerCert() inside TicketCodec
Use Factory->makePeerCert() inside TicketCodec

Summary:
When a certificate is received during a full hanshake,
`Factory->makePeerCert()` is used to allow users to configure the fizz server
to generate different `Cert` implementations depending on their choice of
`Factory`. Upon receipt of a session ticket with `X509` certificate storage,
however, a `PeerCertImpl` is always generated via `CertUtils::makePeerCert()`.

This can be problematic if the cert is decoded as `CertificateStorage::X509`
and then the subsequently issued ticket is encoded as
`CertificateStorage::IdentityOnly`, as this assumes that
`Factory->makePeerCert()->getIdentity()` returns the same value as
`CertUtils::makePeerCert()->getIdentity()`, which is not true for custom
`Factory`s.

To alleviate this, I'm adding a `shared_ptr<Factory>` member of the ticket
cipher, along with a `shared_ptr<CertManager>` for consistency, and removing
the now unnecessary `const FizzServerContext*`. These factory and certManager
feilds are now hard requirements for the construction of the
`Aead128GCMTicketCipher` and for use of the `TicketCodec` more generally.

This also removes the need to worry about the lifetime of the
`FizzServerContext` from within the cipher by removing the dependency on an
entire server context; now instead you only need a factory and certManager.

Reviewed By: mingtaoy

Differential Revision: D24259948

fbshipit-source-id: 1386a7ca2755949bc0c7178f251711849c442e71

facebook/mcrouter,facebook/mcrouter,facebook/mcrouter,facebook/mcrouter