Refactor socket communications

Instead of using 9 bytes with each byte being a decimal digit, use a 32
bit binary value message prefix because apparently that's the legit way
to do socket communications.

Fixes #28