eCryptfs: Add mount option for cipher mode

This patch removes the hardcoding of CBC mode in eCryptfs and adds a
mount option allowing one to specify the desired mode of operation.
Currently this defaults to cbc, but should would with any plain block
cipher mode supported by the kernel.
eCryptfs: Extend file headers to store cipher mode.

This patch changes the way eCryptfs headers use tag 3 (symmetric key)
and tag 1 (asymmetric key) packets, adding fields to store cipher mode
while keeping the format byte compatible with older version of eCryptfs
when CBC mode is used.

For tag 1 packets, the 1 byte cipher identifier field used to always
contain a constant value that was ignored when reading in the header.
This has been repurposed to hold the cipher mode code. For tag 3
packets, an extra cipher mode field has been added, which will
only be present if the cipher mode used is other than CBC.

In both cases, the tag version number is incremented when a packet is
written that is not byte compatible with older versions of eCryptfs.
This happens whenever CBC mode is not used.
Enable GCM support in eCryptfs

This patch adds support for GCM as a cipher mode in eCryptfs. If a file
is encrypted in this mode, the layout of the lower file will change to
accomodate it. This is due to the need to store auth tags as well as
encrypted data.

The file layout being used is as follows. After the header, the first
extent will hold auth tags. After this auth tag extent, data extents are
written until the first auth tag extent becomes full, at which point
another auth tag extent is created, and subsequent data extents have
auth tags stored in that new extent until it fills up, etc. The last
extent in the file should always be a data extent, except in the case of
a zero length upper file, in which case it is the header. This makes it
so that the lower file will never have a case where it needs to move
extents around or have large gaps in the file.