Adding support for better AES Transformations that use an IV

The old  Crypto APIs did not support AES transformations, which require the use of the IV in the `Crypto.decryptAES(..)`
Hence if you used a transformation like `AES/CBC/PKCS5Padding` `Crypto.decryptAES(...)` would fail.

This should address issue #3594 
We've got this code in three places, what about splitting out a common method?
```scala
private def getCipherWithConfiguredProvider(transformation: String): Cipher = {
  config.provider.fold(Cipher.getInstance(transformation)) { p =>
    Cipher.getInstance(transformation, p)
  }
}
```