Separate out the scheme from the GCMMessageCryptographer

Chrome currently implements draft-ietf-webpush-encryption-03, but
following more discussion and a number of changes the Web Push working
group last week announced last call for draft-ietf-webpush-encryption-08.

In order to be able to support both schemes, this CL refactors the
GCMMessageCryptographer to separate out the operations associated with
the version of the encryption scheme.

In addition, the tests are refactored to easily enable using
parameterized tests for those that can be shared between the drafts. The
reference test that doesn't use the auth_secret has been removed, since
we don't actually ship that functionality.

BUG=679789

Review-Url: https://codereview.chromium.org/2713673002
Cr-Commit-Position: refs/heads/master@{#470067}
6 files changed