Add generic FFI provider that uses providers written in C