* Intermediate checkin
* Last check-in before deleting ACK message in Ethr.
* Support for client port, throttling and tos almost working.
* Most functionality working as expected with code all cleaned up.
* Linux/OSX Fixes.
* Fix handshake mechanism.
* Minor cleanup.
* More improvements for external mode.
* Improve admin-mode, root user permission checking.
* Improve detection of IP version for ICMP.
* Update README.md
* Refactor the command line plotting & management code into a package
* Refactor the stats-gathering code into a new package
* Switch to build flags for non-portable packages/code
This way CGO isn't required. The struct was generated using the same
script that the Go teams uses in golang.org/x/sys/unix, which uses `cgo
-godefs` (see https://golang.org/cmd/cgo/#hdr-Go_references_to_C).
Since we're not calling any C functions but rather using a struct, the
struct can be defined in Go and the bytes can be read into the Go
struct, `cgo -godefs` handles the difference in alignment between Go and
C.
Use low level syscall to fetch the tcpstats
Use cgo to get the systems definition for struct tcpstats.
This makes the solution portable across different versions of the OS.