Fix 6 additional bugs in xsh_ping.

1. The echo queue was leaked if an echo request failed to be sent.  This
   effectively meant that once the ping command was run 5 times to a
   non-reachable target, it would never succeed again until the operating
   system was rebooted.

2. xsh_ping did not account for tick wraparound when calculating elapsed
   round-trip times and the total time.  This bug could easily be
   observed by pinging 2 packets with an interval of 480 milliseconds,
   which typically caused the reported total time to be incorrectly
   reported as over 4295000 milliseconds.

3. Reads of clktime and clkticks were not performed atomicly.  This could
   cause the total time reported to be off by up to 1 second.

4. xsh_ping failed to print the status line as soon as each packet was
   received.

5. xsh_ping waited unnecessarily after all packets were received.

6. xsh_ping did not reject the argument '-c 0' and would subsequently
   perform a division by 0.