Implement hierarchical edge replicated multicast (ERM).

The old implementation built a single non-hierarchical tree. Thus it
was necessary for all vRouters to send multicast subscriptions to a
single control node.  That in turn meant that a maximum of 2 control
nodes would be used - active and standby in terms of multicast tree
builder role. This restriction is now removed by having each control
node build it's own tree and then interconnecting the trees together.

Add new AFI/SAFI to exchange ERM routes.
Implement new McastEdgeDiscovery and McastEdgeForwarding attributes.
Tweak multicast tree builder code to work on nodes at a given level.

Rename InetMcastPrefix to ErmVpnPrefix and add new route types that
are used for LocalTreeRoute and GlobalTreeRoute advertised via BGP.
Prefixes learnt via XMPP are considered as Native route type.
Rename InetMcastRoute to ErmVpnRoute.
Rename InetMcastTable to ErmVpnTable and use it as the VPN table as
well as the VRF table.
Add a new RoutePathReplicator for ermvpn.

There are no changes to the XMPP messages used between control node
and agent.

Change-Id: I1092431151b9c3e61f6da32650a8e2c3fcbd87ae
Merge "Implement hierarchical edge replicated multicast (ERM)."