Added fromByteString and fromByteStringStorable in Raaz.Util.ByteString
Optimized Reference Implementation of AES

* Now uses 32Bit words instead of 4 x 8Bit Words similar to CPortable version.
* Speed now only 3 times slower than cportable version as compared to previously being around 90 times slower.
Made AES IV more typesafe by using specific types instead of ByteString
Merge some improvements to AES

1. AES IV now not a plain bytestring.

2. Some optimisations to refrence implementation.
Abstracted out Ref and CPortabe gadgets into types in Primitives common across packages
Fixed raaz-hash for abstracted CGadget and HGadget
Added HasInverse typeclass

* It now replaces CipherGadget typeclass as it is more general and clean.
* Also added Cipher data type.
Fixed raaz-cipher to use CGadget and HGadget interface
Merge some clean ups to the classes types

1. Abstracted the types CPortable and Ref  into CGadget and HGadget

2. Added the HasInverse class that captures gadgets that have inverse
   operation.
added the withGadget function
simplified hash to use withGadget
Added Paddable Gadget for Blake compatibility
Hash fixup for Paddable Gadget
raaz-random bug fixup
Merge changes to facilitate blake like hashes

The previous interface for gadget was not sufficent to capture the
final block of compression of a HAIFA hash like blake. While the
length hashed so far can be kept inside the Memory element of the
gadget, the previous implementation did not provide a way to pass
the actual size to the final stage of hashing.
Context added in SHA1 fixes #94
Context added in SHA256 fixes #94
Context added in SHA224 fixes #94
Context added in SHA384 fixes #94
Context added in SHA512 fixes #94