This test is split into a server and a client part. The former is supplying data, and
the latter is implementing the actual test application.
To run a full test, follow these steps:
    1) Start the server application on some machine that has a Bluetooth LE adapter
       and is close enough to the client machine.
    2) On the client machine, set the QT_BT_GATTSERVER_TEST_ADDRESS environment variable
       to the address of the Bluetooth adapter on the server machine.
    3) Run the test on the client.
If you skip steps 1) or 2), only a few unit tests will be run. These do not require the
test machine to have a Bluetooth adapter.
