Currently we use pre-calculated headers inside the LLE entries as prepend data for `if_output` functions. Using these headers allows saving some CPU cycles/memory accesses on the fast path.
However, this approach makes adding L2 header for IPv4 traffic with IPv6 nexthops a bit complex, as we are not able to store multiple pre-calculated headers per lle. Additionally, the solution space is limited by the fact that PCB caching saves LLEs in addition to the nexthop.
Thus, add support for creating special "child" LLEs for the purpose of holding custom family encaps and store pending mbufs.
These LLEs are stored in a linked-list inside a "parent" (e.g. normal) LLE and are not visible when iterating LLE table.
They leverage `RTF_STATIC` logic, avoiding complex state machine used by the standard LLEs.
"Child" LLE lifetime is bound to the "parent" LLE lifetime - it is not possible to delete "child" LLE if parent is alive.