use NSError to relax failed condition

on 'encrypt:', 'decrypt:' methods for both CryptoBox and SecretBox, [we used NSAssert](https://github.com/aerogear/aerogear-crypto-ios/blob/master/crypto-sdk/AGSecretBox.m#L50) to check whether the crypto process was a success/failure. Although NSAssert makes senses during development time, for scenarios where variability of the crypto params (e.g invalid keys) can be used, it is easier for the client to catch those errors using NSError, instead of forcing an assertion error.