Support quotes and literals when sending commands

We have a command class that we use to construct commands and generate
the data necessary when sending it to the server. This works for simple
commands, but is far from trivial to implement with support for more
complex scenarios such as literals where we have to wait for command
continuation requests.

Make the command sending more flexible by splitting it into multiple
send methods which sends just a part of the command. Use a lock so that
each command finish before the next can be sent. The sendLiteral method
is interesting in that it has to wait for a command continuation request
and then send the data, but this means that it has to block until that
happens. Since a call might block we wrap the sending of each command in
an asynchronous dispatch block.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Implement support for the login command

The login command can be used to log in to the server. We should however
also add the authenticate command since login is only supposed to be
used as a last resort.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>