Fixed the parsing of the negotiation response
Fixed the parsing of the negotiation response

This patch add a new condition to stop to parse the negotiation
response. From the noticed list of hashes by the client, at each step,
we reduce this list. When this list is empty, that means we reach the
end of the negotiation response (but NOT end of the what the server
send).

Then, we can start safely to read more or give up the entirely
response of the server.

It's a special trick on the Smart protocol with the HTTP overlay which
send the negotiation response AND the negotiation result in the same
response. In this context, the test on the list is the only way to
differenciate the ACK of the negotation than the final ACK.

We change 2 behaviours:

- [p_negociation] stops when it found all hashes but not necessary
  when it reachs the end of the input

- [p_negociation] expects at least one ACK from the server - in other
  words, if you try to process input with [p_negociation], it because
  you expect an ACK /negotiation/ response and not because you don't
  what you need to do.

Finally, if you got an error from [p_negociation] but your input
contains an ACK it's surely because this ACK is the final ACK and need
to be processed by [p_negociation_result].

mirage/ocaml-git,mirage/ocaml-git,mirage/ocaml-git