net: pkt: optimize net_pkt packing
net: pkt: optimize net_pkt packing

This change removes unnecessary padding from the net_pkt struct in
preparation for restructuring it in a later commit. Depending on the
number of activated Kconfig options, this saves between 4 and 8 bytes
per packet.

The change also removes anonymous unions inside of bitfields:
 * The assumption, that anonymous unions inside bitfields save space is
   wrong. They rather enforce an additional byte aligment boundary with
   padding before or after on most compilers (try -Wpadded to prove it).
   Removing the unions therefore counter-intuitively removes padding.
 * Some of the fields inside the union may actually not be orthogonal if
   several extensions are enabled at the same time. They may overwrite
   each other when activated at the same time.

The change therefore not only improves packing of net_pkt but also makes
net_pkt easier to understand and maintain by removing potentially
non-orthogonal uses of bits within bitfields.

The union of RX/TX-only attributes has been maintained, though, as it DOES
save space and is easy to maintain. Maintainability has further been
improved by introducing additional inline comments and anonymous structs
that make the orthogonality of RX- and TX-attributes even more obvious.

Signed-off-by: Florian Grandel <246eb2863b4e4387bb88d1fd54b2484fd4fc7b20@gmail.com>

galak/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr,finikorg/zephyr,galak/zephyr,galak/zephyr,zephyrproject-rtos/zephyr,galak/zephyr,galak/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr