ui: Workaround Qt bug causing erratic scrolling

The maximumValue binding on the ScrollBar inside a ScrollView is updated
incorrectly, resulting in the scroll bar position changing in some cases
when contentHeight and originY are changed.

A proper fix for this is submitted upstream at:
https://codereview.qt-project.org/#/c/92401/
Change-Id I2a19e4c70096259ef7bbb5a00727ac767c4b8c57

This workaround accomplishes the same goal, by using private properties
to break the problematic binding and update its value manually at the
right time. If the upstream patch is applied, the workaround will no
longer have any effect.

Fixes #76
tor: Handle multiline data replies from GETINFO
utils: Add PendingOperation class

This is a very simple QObject with signals and properties for a generic
asynchronous operation. It's intended to expose the status of operations
to QML.
tor: Write and filter torrc file manually

Tor's SAVECONF command will write all configuration to the torrc file.
That includes several keys with absolute filesystem paths, some of which
will cause Tor to fail at launch if the path is moved.

Instead, we get the config text from tor, and write it to disk
ourselves after filtering out unwanted keys.

To fix existing configurations, a rewrite of the torrc is triggered on
startup. That can be removed in some later version.

Fixes #59