Restructure cipher context object to contain driver switch

Once an operation has been 'accepted' by a driver, the remainder is bound
to the same driver, since driver-specific context structs cannot be shared.
This provides a pretty good gate mechanism for the fallback logic, too.

Signed-off-by: Steven Cooreman <steven.cooreman@silabs.com>
diff --git a/tests/src/drivers/cipher.c b/tests/src/drivers/cipher.c
index 0f059a0..9db5061 100644
--- a/tests/src/drivers/cipher.c
+++ b/tests/src/drivers/cipher.c
@@ -40,6 +40,8 @@
 void *test_driver_cipher_forced_output = NULL;
 size_t test_driver_cipher_forced_output_length = 0;
 
+/* Test driver, if not explicitly setup, returns 'PSA_ERROR_NOT_SUPPORTED' by default,
+ * causing regular test suites to pass since the core will go into fallback mode. */
 psa_status_t test_transparent_cipher_status = PSA_ERROR_NOT_SUPPORTED;
 unsigned long test_transparent_cipher_hit = 0;