Fix bug where gen_pktline() in smart_protocol.c skips refspecs that delete nonexistant refs

* The new behavior is to send a delete command with an old-id of zero, which matches the behavior of the official git client.
* Update test_network_push__delete() in reaction to above fix.
* Obviate messy logic that handles missing push_spec rrefs by canonicalizing push_spec.  After calculate_work(), loid, roid, and rref, are filled in with exactly what is sent to the server