lib,zebra: move srcdest_table from zebra_rib into libzebra

- make srcdest routing table reusable by putting it into lib
- make the srcdest routing table structure more opaque
- implement a srcdest routing table iterator

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
lib: fix a refcounting issue in src_node_lookup

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
lib: match route_node_lookup behavior with srcdest_rnode_lookup

Return NULL from srcdest_rnode_lookup if the found route_node has
rn->info == NULL. This is to match the behavior of route_node_lookup.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
lib: suppport route_table_finish on srcdest_table

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
lib,zebra: refactor srcdest_table a bit

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
tests: add a test for the srcdest_table structure

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
zebra: support static srcdest routes

Signed-off-by: Christian Franke <chris@opensourcerouting.org>