Refactor AesKey, extracting most functionality to SymmetricKey.

Symmetric key material handling is the same for all symmetric keys
(except, perhaps, DES if we want to handle parity bits correctly), so
move it into a common base.

Change-Id: I6ad5d35ce9020c1ae155bf0a8f2efe35674b1604
diff --git a/soft_keymaster_device.cpp b/soft_keymaster_device.cpp
index d2b9470..05ae6fe 100644
--- a/soft_keymaster_device.cpp
+++ b/soft_keymaster_device.cpp
@@ -632,6 +632,9 @@
     if (!operation_handle || !out_params || !out_params_count)
         return KM_ERROR_OUTPUT_PARAMETER_NULL;
 
+    *out_params = NULL;
+    *out_params_count = 0;
+
     BeginOperationRequest request;
     request.purpose = purpose;
     request.SetKeyMaterial(*key);