Introduce abstraction mbedtls_pk_handle_t

This is the first in a series of commit aimed at removing the pk_info
structures when we're building with MBEDTLS_PK_SINGLE_TYPE enabled.

Introducing this abstraction allows us to later make it a two-valued type
(valid, invalid) instead, which is much lighter.
diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function
index fc917d0..1635855 100644
--- a/tests/suites/test_suite_pk.function
+++ b/tests/suites/test_suite_pk.function
@@ -107,7 +107,7 @@
     TEST_VALID_PARAM( mbedtls_pk_restart_free( NULL ) );
 #endif
 
-    TEST_ASSERT( mbedtls_pk_setup( &pk, NULL ) ==
+    TEST_ASSERT( mbedtls_pk_setup( &pk, MBEDTLS_PK_INVALID_HANDLE ) ==
                  MBEDTLS_ERR_PK_BAD_INPUT_DATA );
 
     /* In informational functions, we accept NULL where a context pointer