Add support for certificate based confidential client auth.  acquireTokenWithClientCertificate

We also have another class named ClientAssertion and an AcquireToken API for it, so developer can create the assertion once and pass it multiple times.