Initial work on URL login support

Client will now parse a Login URL, extract the server's one-time public
key, generate its own key pair, calculate the shared secret, sign it,
and make a POST request to the server with the login package.