Ensure data vector always matches fields.
Add packet parser.  Modify get_network funcs to be pointer to const.

Implemented packet parsing via a friend function.  Whether right or
wrong, I modeled it after how I'd do it with a structure in C, and
a bunch of 'set' method calls is just stupid.  Since I do want
encapsulation 99% of the time, a friend is my best option as far
as I can see at the moment.