Improved ppkt payload access with PPKT_GET

The PPKT_GET macro facilitates access to ppkt_t payloads by performing
the appropirate cast, but also by ensuring that the ppkt_t is actually
big enough for the requested data.

It currently asserts that there is sufficient data because the PLC we're
talking to is polite enough to send valid packets. In the future we may
want to return NULL instead, and leave it to the caller to fail more
gracefully.