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