tests: add hook to specify if a test has been skipped.

This is totally janky, but so is the entire testing system.
build: fix make distcheck.
build: bump version to 0.89.0.
counters: use bson_sync_synchronize() for memory barrier.
client: add mongoc_client_command() to API/ABI.

We should restructure the other wrappers to use this.
database: wrap mongoc_client_command() from mongoc_database_t.
tests: release cursor when we have finished with it.
client: add mongoc_client_command_simple() to API/ABI.

Add simple command execution helper that can be used by database and
collection.
database: change API for command_simple to match client.
cursor: unwrap errmsg from failed command execution.
errors: add error 59, for unknown command.
tests: add database test case for failed command.
collection: wrap mongoc_client_command() and mongoc_client_command_simple().

This simplifies our command handling so that it is all done in
mongoc_client_t. However, the error unwrapping is part of
mongoc_cursor_t, which is tied in with regular query failure handling.
Beginning of documenting everything

a bunch of docs aren't done, symlinked to a todo.txt to make the build
happy