Update message for error during push

When attempting to update a reference on a remote during push, and the
reference on the remote refers to a commit that does not exist locally,
then we should report a more clear error message.
remote: clarify which list of references _ls() returns

Make it clear that this is not the ls-remote command but a way to access
the data we have and how long it's kept around.
remote: don't say we free the remote on disconnect

On disconnect we simply ask the transport to close the connection, we do
not free it.
fetch: clear the connection data on close

When we fetch twice with the same remote object, we did not properly
clear the connection flags, so we would leak state from the last
connection.

This can cause the second fetch with the same remote object to fail if
using a HTTP URL where the server redirects to HTTPS, as the second
fetch would see `use_ssl` set and think the initial connection wanted to
downgrade the connection.
Merge pull request #2719 from libgit2/cmn/fetch-twice

fetch: clear the connection data on close
Merge pull request #2717 from libgit2/cmn/remote-ls

Clarify the git_remote_ls() documentation
Merge pull request #2713 from libgit2/jamill/push_fetch_first

Update message for error during push