Add an MPLS pctrie module using the FIB framework's subscription,
rebuild, and instance lifecycle. Retain nexthop and group references in
immutable leaves, retire withdrawn leaves after the network epoch, and
reclaim trie nodes through UMA/SMR. Avoid allocating a new leaf for an
unchanged nexthop.
If an incremental allocation fails after the RIB update, switch to
locked RIB lookup before requesting a rebuild. Keep that fallback active
until a fresh instance replaces the divergent trie, since the framework
can stop delivering changes while rebuilding.
Distinguish an uninitialized datapath slot from an ordinary lookup miss
so initial setup failures and new FIBs also retain locked lookup.
Maintain the non-FIB_ALGO path and release the MPLS datapath array
during VNET teardown.
Extend the routing ktest to populate and remove multiple trie branches,
checking that every remaining label still resolves after each change.