gom: Remove fetching the generated SQL for a command

We ultimately want to get rid of SQL in the public API, so start
with not making the generated SQL command readable.
gom: Remove incorrect warning in gom_resource_save_sync()

The API documentation for gom_resource_save_sync() mentioned that
this needed to be called within the SQLite thread. This is incorrect
since b9173234ffc848083724486dd564af4a9ee89884 which made this
sync call push the request to the SQLite in a thread-safe way.
tests: Add test for column added in DB version 2
gom: Don't consider a property mapped if type is not handled

If the type for a property is not one of the fundamental types that
we know how to handle, don't map it in the command builder.
gom: Consider version 0 the absence of version

If version 0 is the absence of DB version information in the database,
then migrations should be done at least up to version 1.
gom: Add GomResource property metadata

Add "new-in-version" and "is-mapped" metadata for GomResource
sub-class properties. This allows application developers to
control which properties will be mapped to column names, and
tell the automated migration tool which columns to add.
gom: Add gom_command_builder_build_create()

As documented in the API docs. This will be used for the automatic
migration feature.
gom: Add gom_repository_automatic_migrate_(a)sync

It's an automatic migration tool, which will take care of create the
table for each of the passed types, as well as adding any columns
necessary to upgrade to the latest version.
tests: Use automatic migration in test
gom: Fix sql_type_for_column() return value

Should return NULL not FALSE.
gom: Fix obvious bug in table creation function

There was only ever one command in the creation commands returned.
gom: Fix a memory leak in gom_repository_migrate_sync()

And by extension in the automatic migration sync call.
gom: Fix memory leak when destroying adapter

If we closed the DB properly, we were leaking the queue and thread.
gom: Fix a few memory leaks in GomMemoryGroup
gom: Add to/from bytes metadata properties

If a property is not a number or a string, we'll need help
serialising and deserialising it to a GBytes which we would fit
in a BLOB column.
gom: Use new to/from bytes functions from GomResource
tests: Add test for the new transformation functions
gom: Add GDateTime/strv support in automatic migration
tests: Add test for GDateTime and strv properties
gom: Enhance performance for our use cases

First, we'll use the SQLITE_OPEN_NOMUTEX open flag, which will
mean that we are expected to implement our own locking access to
the database, which we don't need to do as a single worked thread
will access the database.

Secondly, we'll execute a few PRAGMA statements. The journal_mode
will change the behaviour of the rollback model. We now use a
write-ahead log instead of a journal. This is much faster with small
transactions (ours are very small).
https://www.sqlite.org/pragma.html#pragma_journal_mode

With this change, adding 1000 items into a disk-backed database
drops from 20 seconds to 7 seconds.

Finally, we also change the synchronous behaviour to NORMAL.
This is a good trade-off between performance, and possibility of
database corruption.
https://www.sqlite.org/pragma.html#pragma_synchronous

With the same test case as above, we drop from taking 7 seconds
to 0.2 seconds to add 1000 items.