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 and IVs as well as
encrypted data.

The file layout being used is as follows. After the header, the first
extent will hold IVs and auth tags. After this metadata extent, data extents are
written until the first metadata extent becomes full, at which point
another metadata extent is created, and subsequent data extents have
auth tags and IVs 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.

Signed-off-by: Alvin Tran <althaitran@gmail.com>
Signed-off-by: Michael Chang <thenewme91@gmail.com>
Signed-off-by: William Morrison <camocrazed@gmail.com>
Signed-off-by: Zameer Manji <zmanji@gmail.com>