Replaces the fork/exec and output parsing with usage of libopenconnect
for authentication. The actual connection establishment is still done by
calling the openconnect binary using the token obtained via the use of
The library has a proprietary main loop and provides only a synchronous
API, which is worked around by using a thread to run the authentication.
The events from the library are then delegated to the main thread via
the event loop.