dbbuilder: Use g_warning for the error cases

This is better than just g_print.
context: Add the basic skeleton for CangjieContext

There is so much boilerplate for writing GObjects... This commit just
brings the absolute minimum for having a new CangjieContext object.

We'll start filling it up in the next commits.
flags: Add a new CangjieCharFamilyFlags type

This will be used by API callers to describe which families of
characters they are interested in when they run queries.
context: Add properties and constructor

We now have a proper constructor, which sets the appropriate GObject
properties for the CangjieContext object.

Those properties can also be changed at run-time. I'd like to see if we
can get that to work nicely, so that API consumers don't have to always
destroy/recreate a new CangjieContext when the user changes the settings
or something.
context: Check orientation value

This is a bit weird, so it deserves some explanation... (which at some
point should certainly go into the API documentation, when we have one)

We have characters in a database. Some of the can be used only to input
vertical text, others only for horizontal texts.

But most of them can be used to input BOTH vertically and horizontally.
(this is the case of every single Chinese character, in fact).

This explains the 3 possible values for the CangjieOrientation enum.

However, a user is inputting either vertically, or horizontally. It
makes no sense whatsoever to say that a user is inputting both
vertically and horizontally at the same time.

As such, only 2 values are correct for the CangjieContext.

When the user inputs horizontally, we will return all the characters
which are either horizontal or "both vertical and horizontal". (i.e
those NOT vertical)

And when the user inputs vertically, we will return all the characters
which are either vertical or "both vertical and horizontal". (i.e those
NOT horizontal)
context: Start building the query filter

This commit sets up a private `filter` attribute of the CangjieContext,
which will later be used for queries.

At the moment, We only filter queries by the Cangjie version the user
is interested in.
context: Filter queries by input orientation
context: Filter queries by character families

With this, the CangjieContext internal filter is ready.

All we need to do now is filter queries by code, but this is done when a
query is actually made, it isn't a property of the CangjieContext
itself.