Refactor isoping and add unit tests.

Separate out isoping per-client state into a struct, and do most per-packet
processing in separate functions.  This makes testing feasible, and will let us
support multiple clients per server.  Also compile as C++ to make the struct
initialization clean and get access to hash tables for the multiclient scenario.

No actual logic changes involved, just new tests added.

Change-Id: I1d405f25043770484e2dbad183d3bc9206abf60d
51 files changed