Merged GCM refactoring into development

GCM is now independent of AES and can be used as a mode for any
cipher-layer supported 128-bit based block cipher