Switch API level to 610

There were some changes that had to be accounted for:

 * Cluster is gone, so cluster futures, resources, etc were removed

 * Create database returns a database object not future, so database future
   type is removed.

 * It's possible to use json tracing format on the client, so added that
   netowrk option.
diff --git a/c_src/atom_names.h b/c_src/atom_names.h
index 47bd088..bd0cde8 100644
--- a/c_src/atom_names.h
+++ b/c_src/atom_names.h
@@ -28,7 +28,6 @@
 
 ATOM_MAP(erlfdb_error);
 ATOM_MAP(erlfdb_future);
-ATOM_MAP(erlfdb_cluster);
 ATOM_MAP(erlfdb_database);
 ATOM_MAP(erlfdb_transaction);
 
@@ -39,6 +38,7 @@
 ATOM_MAP(local_address);
 ATOM_MAP(cluster_file);
 ATOM_MAP(trace_enable);
+ATOM_MAP(trace_format);
 ATOM_MAP(trace_roll_size);
 ATOM_MAP(trace_max_logs_size);
 ATOM_MAP(trace_log_group);
@@ -65,10 +65,6 @@
 ATOM_MAP(enable_slow_task_profiling);
 
 
-// Cluster Options
-// There aren't any...
-
-
 // Database Options
 ATOM_MAP(location_cache_size);
 ATOM_MAP(max_watches);
@@ -135,4 +131,4 @@
 // Error Predicates
 ATOM_MAP(retryable);
 ATOM_MAP(maybe_committed);
-ATOM_MAP(retryable_not_committed);
\ No newline at end of file
+ATOM_MAP(retryable_not_committed);
diff --git a/c_src/fdb.h b/c_src/fdb.h
index 837d810..62dffda 100644
--- a/c_src/fdb.h
+++ b/c_src/fdb.h
@@ -13,7 +13,7 @@
 #ifndef ERLFDB_FDB_H
 #define ERLFDB_FDB_H
 
-#define FDB_API_VERSION 600
+#define FDB_API_VERSION 610
 #include <foundationdb/fdb_c.h>
 
-#endif // Included fdb.h
\ No newline at end of file
+#endif // Included fdb.h
diff --git a/c_src/main.c b/c_src/main.c
index 16c3618..3504aa5 100644
--- a/c_src/main.c
+++ b/c_src/main.c
@@ -217,52 +217,6 @@
 
 
 static inline ERL_NIF_TERM
-erlfdb_future_get_cluster(ErlNifEnv* env, ErlFDBFuture* f)
-{
-    FDBCluster* cluster;
-    ErlFDBCluster* c;
-    ERL_NIF_TERM ret;
-    fdb_error_t err;
-
-    err = fdb_future_get_cluster(f->future, &cluster);
-    if(err != 0) {
-        return erlfdb_erlang_error(env, err);
-    }
-
-    c = enif_alloc_resource(ErlFDBClusterRes, sizeof(ErlFDBCluster));
-    c->cluster = cluster;
-
-    ret = enif_make_resource(env, c);
-    enif_release_resource(c);
-
-    return T2(env, ATOM_erlfdb_cluster, ret);
-}
-
-
-static inline ERL_NIF_TERM
-erlfdb_future_get_database(ErlNifEnv* env, ErlFDBFuture* f)
-{
-    FDBDatabase* database;
-    ErlFDBDatabase* d;
-    ERL_NIF_TERM ret;
-    fdb_error_t err;
-
-    err = fdb_future_get_database(f->future, &database);
-    if(err != 0) {
-        return erlfdb_erlang_error(env, err);
-    }
-
-    d = enif_alloc_resource(ErlFDBDatabaseRes, sizeof(ErlFDBDatabase));
-    d->database = database;
-
-    ret = enif_make_resource(env, d);
-    enif_release_resource(d);
-
-    return T2(env, ATOM_erlfdb_database, ret);
-}
-
-
-static inline ERL_NIF_TERM
 erlfdb_future_get_value(ErlNifEnv* env, ErlFDBFuture* f)
 {
     fdb_bool_t present;
@@ -497,6 +451,8 @@
         option = FDB_NET_OPTION_CLUSTER_FILE;
     } else if(IS_ATOM(argv[0], trace_enable)) {
         option = FDB_NET_OPTION_TRACE_ENABLE;
+    } else if(IS_ATOM(argv[0], trace_format)) {
+        option = FDB_NET_OPTION_TRACE_FORMAT;
     } else if(IS_ATOM(argv[0], trace_roll_size)) {
         option = FDB_NET_OPTION_TRACE_ROLL_SIZE;
     } else if(IS_ATOM(argv[0], trace_max_logs_size)) {
@@ -711,10 +667,6 @@
         return erlfdb_future_get_version(env, f);
     } else if(f->ftype == ErlFDB_FT_KEY) {
         return erlfdb_future_get_key(env, f);
-    } else if(f->ftype == ErlFDB_FT_CLUSTER) {
-        return erlfdb_future_get_cluster(env, f);
-    } else if(f->ftype == ErlFDB_FT_DATABASE) {
-        return erlfdb_future_get_database(env, f);
     } else if(f->ftype == ErlFDB_FT_VALUE) {
         return erlfdb_future_get_value(env, f);
     } else if(f->ftype == ErlFDB_FT_STRING_ARRAY) {
@@ -728,11 +680,15 @@
 
 
 static ERL_NIF_TERM
-erlfdb_create_cluster(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
+erlfdb_create_database(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
 {
     ErlFDBSt* st = (ErlFDBSt*) enif_priv_data(env);
-    FDBFuture* future;
     ErlNifBinary bin;
+    FDBDatabase* database;
+    fdb_error_t err;
+    ErlFDBDatabase* d;
+    ERL_NIF_TERM ret;
+
 
     if(st->lib_state != ErlFDB_CONNECTED) {
         return enif_make_badarg(env);
@@ -750,62 +706,18 @@
         return enif_make_badarg(env);
     }
 
-    future = fdb_create_cluster((const char*) bin.data);
-
-    return erlfdb_create_future(env, future, ErlFDB_FT_CLUSTER);
-}
-
-
-static ERL_NIF_TERM
-erlfdb_cluster_set_option(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
-{
-    // There are currently no valid cluster options
-    return enif_make_badarg(env);
-}
-
-
-static ERL_NIF_TERM
-erlfdb_cluster_create_database(
-        ErlNifEnv* env,
-        int argc,
-        const ERL_NIF_TERM argv[]
-    )
-{
-    ErlFDBSt* st = (ErlFDBSt*) enif_priv_data(env);
-    ErlFDBCluster* c;
-    FDBFuture* future;
-    ErlNifBinary bin;
-    void* res;
-
-    if(st->lib_state != ErlFDB_CONNECTED) {
-        return enif_make_badarg(env);
+    err = fdb_create_database((const char*) bin.data, &database);
+    if(err != 0) {
+        return erlfdb_erlang_error(env, err);
     }
 
-    if(argc != 2) {
-        return enif_make_badarg(env);
-    }
+    d = enif_alloc_resource(ErlFDBDatabaseRes, sizeof(ErlFDBDatabase));
+    d->database = database;
 
-    if(!enif_get_resource(env, argv[0], ErlFDBClusterRes, &res)) {
-        return enif_make_badarg(env);
-    }
-    c = (ErlFDBCluster*) res;
+    ret = enif_make_resource(env, d);
+    enif_release_resource(d);
 
-    if(!enif_inspect_binary(env, argv[1], &bin)) {
-        return enif_make_badarg(env);
-    }
-
-    // FoundationDB requires a dbname that is "DB"
-    if(bin.size != 2 || bin.data[0] != 'D' || bin.data[1] != 'B') {
-        return enif_make_badarg(env);
-    }
-
-    future = fdb_cluster_create_database(
-            c->cluster,
-            (const uint8_t*) bin.data,
-            bin.size
-        );
-
-    return erlfdb_create_future(env, future, ErlFDB_FT_DATABASE);
+    return T2(env, ATOM_erlfdb_database, ret);
 }
 
 
@@ -2068,10 +1980,7 @@
     NIF_FUNC(erlfdb_future_get_error, 1),
     NIF_FUNC(erlfdb_future_get, 1),
 
-    NIF_FUNC(erlfdb_create_cluster, 1),
-    NIF_FUNC(erlfdb_cluster_set_option, 3),
-    NIF_FUNC(erlfdb_cluster_create_database, 2),
-
+    NIF_FUNC(erlfdb_create_database, 1),
     NIF_FUNC(erlfdb_database_set_option, 3),
     NIF_FUNC(erlfdb_database_create_transaction, 1),
 
diff --git a/c_src/resources.c b/c_src/resources.c
index c7c5319..88f402a 100644
--- a/c_src/resources.c
+++ b/c_src/resources.c
@@ -14,7 +14,6 @@
 
 
 ErlNifResourceType* ErlFDBFutureRes;
-ErlNifResourceType* ErlFDBClusterRes;
 ErlNifResourceType* ErlFDBDatabaseRes;
 ErlNifResourceType* ErlFDBTransactionRes;
 
@@ -35,18 +34,6 @@
         return 0;
     }
 
-    ErlFDBClusterRes = enif_open_resource_type(
-            env,
-            NULL,
-            "erlfdb_cluster",
-            erlfdb_cluster_dtor,
-            ERL_NIF_RT_CREATE,
-            NULL
-        );
-    if(ErlFDBClusterRes == NULL) {
-        return 0;
-    }
-
     ErlFDBDatabaseRes = enif_open_resource_type(
             env,
             NULL,
@@ -91,17 +78,6 @@
 
 
 void
-erlfdb_cluster_dtor(ErlNifEnv* env, void* obj)
-{
-    ErlFDBCluster* c = (ErlFDBCluster*) obj;
-
-    if(c->cluster != NULL) {
-        fdb_cluster_destroy(c->cluster);
-    }
-}
-
-
-void
 erlfdb_database_dtor(ErlNifEnv* env, void* obj)
 {
     ErlFDBDatabase* d = (ErlFDBDatabase*) obj;
@@ -133,4 +109,4 @@
     self = enif_make_pid(env, &pid);
 
     return enif_compare(t->owner, self) == 0;
-}
\ No newline at end of file
+}
diff --git a/c_src/resources.h b/c_src/resources.h
index ead7b1c..8733f87 100644
--- a/c_src/resources.h
+++ b/c_src/resources.h
@@ -20,7 +20,6 @@
 
 
 extern ErlNifResourceType* ErlFDBFutureRes;
-extern ErlNifResourceType* ErlFDBClusterRes;
 extern ErlNifResourceType* ErlFDBDatabaseRes;
 extern ErlNifResourceType* ErlFDBTransactionRes;
 
@@ -31,8 +30,6 @@
     ErlFDB_FT_VOID,
     ErlFDB_FT_VERSION,
     ErlFDB_FT_KEY,
-    ErlFDB_FT_CLUSTER,
-    ErlFDB_FT_DATABASE,
     ErlFDB_FT_VALUE,
     ErlFDB_FT_STRING_ARRAY,
     ErlFDB_FT_KEYVALUE_ARRAY
@@ -51,12 +48,6 @@
 } ErlFDBFuture;
 
 
-typedef struct _ErlFDBCluster
-{
-    FDBCluster* cluster;
-} ErlFDBCluster;
-
-
 typedef struct _ErlFDBDatabase
 {
     FDBDatabase* database;
@@ -74,7 +65,6 @@
 
 int erlfdb_init_resources(ErlNifEnv* env);
 void erlfdb_future_dtor(ErlNifEnv* env, void* obj);
-void erlfdb_cluster_dtor(ErlNifEnv* env, void* obj);
 void erlfdb_database_dtor(ErlNifEnv* env, void* obj);
 void erlfdb_transaction_dtor(ErlNifEnv* env, void* obj);
 
@@ -82,4 +72,4 @@
 int erlfdb_transaction_is_owner(ErlNifEnv* env, ErlFDBTransaction* t);
 
 
-#endif // Included resources.h
\ No newline at end of file
+#endif // Included resources.h
diff --git a/src/erlfdb.app.src b/src/erlfdb.app.src
index 0b9b6c0..4134ae3 100644
--- a/src/erlfdb.app.src
+++ b/src/erlfdb.app.src
@@ -18,7 +18,7 @@
     {maintainers, ["Paul J. Davis"]},
     {links, [{"GitHub", "https://github.com/cloudant-labs/couchdb-erlfdb"}]},
     {env, [
-        {api_version, 600},
+        {api_version, 610},
         {network_options, []}
     ]}
-]}.
\ No newline at end of file
+]}.
diff --git a/src/erlfdb.erl b/src/erlfdb.erl
index 4bde103..e6eccbd 100644
--- a/src/erlfdb.erl
+++ b/src/erlfdb.erl
@@ -142,8 +142,7 @@
 
 
 open(ClusterFile) ->
-    Cluster = wait(erlfdb_nif:create_cluster(ClusterFile)),
-    wait(erlfdb_nif:cluster_create_database(Cluster, <<"DB">>)).
+    erlfdb_nif:create_database(ClusterFile).
 
 
 create_transaction(?IS_DB = Db) ->
diff --git a/src/erlfdb_nif.erl b/src/erlfdb_nif.erl
index 546d055..2b73199 100644
--- a/src/erlfdb_nif.erl
+++ b/src/erlfdb_nif.erl
@@ -25,12 +25,7 @@
     future_get_error/1,
     future_get/1,
 
-    create_cluster/0,
-    create_cluster/1,
-    cluster_set_option/2,
-    cluster_set_option/3,
-    cluster_create_database/2,
-
+    create_database/1,
     database_set_option/2,
     database_set_option/3,
     database_create_transaction/1,
@@ -63,12 +58,11 @@
 ]).
 
 
--define(DEFAULT_API_VERSION, 600).
+-define(DEFAULT_API_VERSION, 610).
 
 
 -type error() :: {erlfdb_error, Code::integer()}.
 -type future() :: {erlfdb_future, reference(), reference()}.
--type cluster() :: {erlfdb_cluster, reference()}.
 -type database() :: {erlfdb_database, reference()}.
 -type transaction() :: {erlfdb_transaction, reference()}.
 
@@ -79,7 +73,6 @@
     {Key::binary(), OrEqual::boolean(), Offset::integer()}.
 
 -type future_result() ::
-    cluster() |
     database() |
     integer() |
     binary() |
@@ -91,6 +84,7 @@
     local_address |
     cluster_file |
     trace_enable |
+    trace_format |
     trace_roll_size |
     trace_max_logs_size |
     trace_log_group |
@@ -116,8 +110,6 @@
     disable_client_statistics_logging |
     enable_slow_task_profiling.
 
--type cluster_option() :: there_are_no_cluster_options.
-
 -type database_option() ::
     location_cache_size |
     max_watches |
@@ -211,16 +203,11 @@
     erlfdb_future_get(Ft).
 
 
--spec create_cluster() -> future().
-create_cluster() ->
-    create_cluster(<<0>>).
+-spec create_database(ClusterFilePath::binary()) -> database().
+create_database(<<>>) ->
+    create_database(<<0>>);
 
-
--spec create_cluster(ClusterFilePath::binary()) -> future().
-create_cluster(<<>>) ->
-    create_cluster(<<0>>);
-
-create_cluster(ClusterFilePath) ->
+create_database(ClusterFilePath) ->
     Size = size(ClusterFilePath) - 1,
     % Make sure we pass a NULL-terminated string
     % to FoundationDB
@@ -230,26 +217,7 @@
         _ ->
             <<ClusterFilePath/binary, 0>>
     end,
-    erlfdb_create_cluster(NifPath).
-
-
--spec cluster_set_option(cluster(), Option::cluster_option()) -> ok.
-cluster_set_option(Cluster, Option) ->
-    cluster_set_option(Cluster, Option, <<>>).
-
-
--spec cluster_set_option(
-        cluster(),
-        Option::cluster_option(),
-        Value::option_value()
-    ) -> ok.
-cluster_set_option({erlfdb_cluster, Cluster}, Opt, Value) ->
-    erlfdb_cluster_set_option(Cluster, Opt, Value).
-
-
--spec cluster_create_database(cluster(), DbName::binary()) -> {ok, database()}.
-cluster_create_database({erlfdb_cluster, Cluster}, DbName) ->
-    erlfdb_cluster_create_database(Cluster, DbName).
+    erlfdb_create_database(NifPath).
 
 
 -spec database_set_option(database(), Option::database_option()) -> ok.
@@ -535,12 +503,8 @@
 erlfdb_future_get_error(_Future) -> ?NOT_LOADED.
 erlfdb_future_get(_Future) -> ?NOT_LOADED.
 
-% Clusters
-erlfdb_create_cluster(_ClusterFile) -> ?NOT_LOADED.
-erlfdb_cluster_set_option(_Cluster, _ClusterOption, _Value) -> ?NOT_LOADED.
-erlfdb_cluster_create_database(_Cluster, _DbName) -> ?NOT_LOADED.
-
 % Databases
+erlfdb_create_database(_ClusterFilePath) -> ?NOT_LOADED.
 erlfdb_database_set_option(_Database, _DatabaseOption, _Value) -> ?NOT_LOADED.
 erlfdb_database_create_transaction(_Database) -> ?NOT_LOADED.
 
@@ -599,4 +563,4 @@
 
 % Misc
 erlfdb_get_error(_Error) -> ?NOT_LOADED.
-erlfdb_error_predicate(_Predicate, _Error) -> ?NOT_LOADED.
\ No newline at end of file
+erlfdb_error_predicate(_Predicate, _Error) -> ?NOT_LOADED.