sd-dhcp: refactor dhcp_option_append

Store a pointer to the options in the DHCPMessage struct, and pass
this together with an offset around, rather than a uint8_t**.

This avoids us having to (re)compute the pointer; and changes
dhcp_option_append from adjusting both the pointer to the next
option and the remaining size of the options, to just adjusting
the current offset.

This makes the code a bit simpler to follow IMHO, but there should
be no functional change.
sd-dhcp: refactor parse_options

Similar to the previous patch, exchange a length and a pointer with only one offset variable.
Also fix the type of the options to be uint8_t[], rather than uint8_t*.
dhcp-lease: refactor lease parsing

Use helper functions, and add some more sanity checking/asserts.
dhcp-lease: add support for parsing a few more dhcp options