Fix some HP reporting bugs

- HP is now correctly reported as floor(a/b*48) rather than round(a/b*48)
- damage messages no longer leak additional information beyond what the
  user can get by comparing the before and after values of the HP bar
- information on when to force the HP bar to yellow is now sent to
  the client when the HP bar has exactly 9 pixels but the HP ratio is
  strictly greater than 0.2
- the protocol is optimised slightly to use less bandwidth

There is still more work to be done. In particular, exact health
information be should sent to the client when damage is done to the user's
own Pokemon. Currently, all damage sends pixel information, never exact
health information.