Import QtSingleApplication from Qt solutions.
Ensure that only one Dact instance is ever running.
Make it possible to send dact: URIs between instances.

This is a necessary step for supporting Dact URIs on Windows and Linux.
QtSingleApplication verify that an activation window is a top-level window.
Set the activation window.

This has the result that the last active window is raised and focused on
when executing a query.
Import the ProgramOptions class.

(This was developed by myself in other projects.)
Clean up option handling.
Cover the most interesting use cases of inter-Dact communication.
Check for corpus existence.

alpinocorpus' MulitCorpusReader now throws exceptions when a corpus does
cannot be opened. Exceptions in threads are baaaaaad. So, we should either
catch it or check that preconditions hold. We do the latter ;).