Made optimizations in Haskell version of AES and Made IV more typesafe.

* Now added the optimizations we discussed for C version into haskell version.
* Move from `ByteString` to more type safe IV values.