Add high-level GCM operations.

Lots of refactoring is needed still.  Too many low-level operations in
the top-level module, too much untypedness by use of bytestrings, no
interface for incremental GCM operations, etc etc.