Implement an HTTP server that supports HPP requests, and add a fake
packet `HPPPacket` that allows interaction with existing code.
The `RMCResponse` won't write the protocol ID bytes if it's set to zero.
This allows support for HPP, as the RMC responses of this protocol don't
include the protocol ID.
Don't use a fixed value to get the parameters, as a custom ID can extend
the header size and cause issues when reading the parameters. Get the
offset dynamically instead.
Now validates data before passing it to crunch in order to avoid buffer read/write out of bounds panics. This API update is breaking and all code using it will need to be updated
Split the Stream struct into 2 separate stream types for clearer intent. Also now pass them a reference to the server pointer to access server config (namely the NEX minor version)
Structure NEX types are now being implemented (a push to nex-protocols-go will follow shortly). However the implementation is pretty jank and could use some work. Currently uses emulated inheritance