tests: Add the unit testing infrastructure
tests: Monkey patch the environment

We don't want to connect tot he actual bus to run our unit tests.

This allows us to completely instrument our engine class and test its
behaviour.

The test-specific attributes in our monkey-patched classes should all
start with "_mock_", for example:
    MockEngine._mock_auxiliary_text

This should help make sure we don't create conflicts with the actual
attributes of the objects we are monkey-patching.
tests: Start testing the Cangjie engine

This tests for some of the expecte behaviours of the Cangjie engine,
based on automated user input.
Import the bundled pycanberra relatively

This helps running unit tests against the local dev tree
rather than the installed version.
tests: Run against the development tree

This will help catching regressions earlier.
tests: Rename the test file

For now, I'll write a test file per engine, we'll see later on if
another grouping makes more sense.
tests: Introduce MockCanberra

This will be useful to test that we are "emitting sounds" on certain
conditions.
tests: Add a bunch of unit tests for Cangjie
tests: Check the behaviour of escape and backspace
cangjie: Properly handle star as first character

In Cangjie, the asterisk (*) can only be used as a wildcard if it is
**surrounded** by text, that is, it needs **at least** one character
before and one character after.

As such, if the first thing the user types is an asterisk, we shouldn't
consider it as a wildcard, but as a plain character to type directly.

This commit introduces two new unit tests which make sure we will not
regress on this feature.