rebase and modify to support some changed behaviors

* Update code to reflect new api object (ffi and lib are no longer private)
* tests updated to take an api object
* skipif marks removed for now as we need to use the api passed to each
  individual test. skip testing done inside the test
* changed name of supports in api to supports_cipher (future PRs will
  contain supports_hash)
diff --git a/tests/primitives/test_cryptrec.py b/tests/primitives/test_cryptrec.py
index 54ae4d0..fb2bf19 100644
--- a/tests/primitives/test_cryptrec.py
+++ b/tests/primitives/test_cryptrec.py
@@ -23,13 +23,10 @@
 
 import pytest
 
-from cryptography.bindings.openssl.api import api
 from cryptography.primitives.block import BlockCipher, ciphers, modes
 
 from ..utils import load_cryptrec_vectors_from_file
 
-CAMELLIA_ECB_SUPPORTED = api.supports('camellia-128-ecb')
-
 
 def parameterize_encrypt_test(cipher, vector_type, params, fnames):
     return pytest.mark.parametrize(params,
@@ -42,9 +39,7 @@
     )
 
 
-@pytest.mark.skipif("not CAMELLIA_ECB_SUPPORTED")
 class TestCamelliaECB(object):
-
     @parameterize_encrypt_test(
         "Camellia", "NTT",
         ("key", "plaintext", "ciphertext"),
@@ -54,10 +49,13 @@
             "camellia-256-ecb.txt",
         ]
     )
-    def test_NTT(self, key, plaintext, ciphertext):
+    def test_NTT(self, key, plaintext, ciphertext, api):
+        if not api.supports_cipher('camellia-128-ecb'):
+            pytest.skip()
         cipher = BlockCipher(
             ciphers.Camellia(binascii.unhexlify(key)),
             modes.ECB(),
+            api
         )
         actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext))
         actual_ciphertext += cipher.finalize()