Implement new settings storage and API

    QSettings has been used to store configuration, including critical data
    like the contacts list. But it is flawed: lack of atomic writes can result
    in data loss, the ini format is limited and crappy, the API is awful,
    and there is no easy way to support QML or bindings.

    This system addresses these concerns with a new JSON-based settings API.
    It can be exposed to QML, supports change notification, always uses
    atomic writes, and improves the read/write APIs.

    On first use, existing configurations will be imported. All known
    settings are preserved. The old configuration will not be removed after
    import to prevent data loss; they may be cleaned up in some future
    update.

This is an itch with Qt that I've wanted to scratch for a long time. It happens to be very useful here: this makes adding configurable and persistent features to the UI dramatically easier, and is a step towards cleaning up some of the core code related to contacts and identities.