trivial: ws fixes
xorp: libxorp: Fix find_subtree function of TrieNode

Problem was that it was going unconditionaly right, if the
left branch didn't contain network we were looking for.
That is wrong, because it is posible that left branch is contained
in the network that we're looking for. Because of that it's
possible that it's our candidate.
Added checks for the left and right branches.
Added test that really test if we found correct subtree.
Passed trie test.
xorp: libxorp: Add operator!= to the Trie iterators
xorp: libxorp: Add size() method, and change payload_count type to size_t
xorp: rib: Register for the max_specific subnet

Register for the max_specific subnet, when registering for non resolvable address.
That way listener can be notified when the address become resolvable.
xorp: rib: Add str() method for RouteRange
xorp: rib: Dynamicly allocate memory for nexthop, instead of saving them in map

This is a lot safer, because each IPRouteEntry is now the real owner of nexthop!
Updated IPRouteEntry to approprietly delete nexthop, and added copy constructor.
Nexthop pointer, which is passed to IPRouteEntry shouldn't be freed by the callers
of IPRouteEntry constructor.
Passed all rib tests.
xorp: rib: Print parent name of RedistTable in str()
xorp: rib: Add constified method for geting parent from RouteTable classes
xorp: rib: ExtInt table can now be initialized with NULL parents

Added necesary checks, everywhere where it's possible to call,
_ext_table or _int_table. Now they can take NULL values. This
will enable us to uncoditionally plumb ExtInt table. When
it's unconditionally plumbed we can add some route caching to it.
Passed all tests.
xorp: rib: Uncoditionally plumb ExtInt table

Now we uncoditionally plumb ExtInt table in front of Register table.
Also, in intialize functions, instead of checking with if statement,
use XLOG_ASSERTS. All checks MUST pass, so we shouldn't
waste our performances on those checks.
Passed all tests.
xorp: rib: Pretify print_rib function
xorp: libxorp: trie: Print warning only if debugging

Don't print warning if we're overwriting node. Assume that programmer knows what it's doing.
Print the warning only in debug mode!
xorp: rib: Don't propagate route copy from PolicyConnectedTable

All routes are saved in trie, as pointers to non const objects.
That way they can be modified.
All routes will be cached in subsequent tables, and because of that,
we must pass pointers to objects that won't be destroyed.
This table is responsible of freeing the memory of route objects.
Passed all rib tests.
xorp: libxorp: Fix finding of bounds in trie

Problem was when we're in right intermidiate node, and there is existing
left node.
Just set the lo to the highest address of the right node and continue.
Passed all trie tests.
xorp: rib: Cache routes in ExtInt table

Now we cache wining IGP, EGP and overall routes.
All functions are updated to use this cached routes.
Wining IGP routes are added/deleted to _wining_igp_routes only in function add_route/delete_route,
if we're adding/deleting route from IGP parent.
Wining EGP routes are added/deleted to/from _wining_egp_routes only in function add_route/delete_route,
if we're adding/deleting route from EGP parent.
It's possible that the same route is added to _wining_{igp, egp}_routes only when we're recursively call the
add_route() method. That's not the problem because it overwrites pointer with the existing pointer.

_wining_routes are updated always when we propagate add or delete routes.

All lookups are performed on this tries.

Passed all rib tests.
xorp: rib: Don't check for next_table in ExtInt table

Don't waste CPU on unecessary checks,
because next_table must not be NULL if we have initialized RIB.
xorp: libxorp: Make trie lookup faster

Lookup is made faster by avoiding creation of temporary objects in functions,
that are in fast path.
xorp: rib: tests: Add some additional tests, to better test RIB
xorp: policy: backend: Fix memory leak in PolicyredistMap