Diagnostics - traceroute and ping support

A diagnostic packet is a packet that is injected by agent to accomplish
two main functionalities (for now) - reachability (ping) and path
information (traceroute), given the five tuple (sip,sport,dip,dport,proto).

While injecting the packet, agent explicitly marks the packet as a
diagnostic packet. If the packet transits a compute node, at the
receiving compute, the transport header checksum is used to identify
whether the packet is a diagnostic packet or not.

Ping, thus is straight forward

For traceroute to work, vrouter needs to decrement ttl and send icmp
time to live exceeded message. Every packet that vrouter forwards,
vrouter decerements the ttl and if the ttl goes to zero trap the packet
to agent, which processes the message and sends an icmp ttl exceeded
message. For a diagnostic packet, the inner network header ttl is
also copied onto outer network header so that the fabric routers
do send a ttl exceeded message and thus a map of the underlay is known.

Partial-BUG: #1379622
Change-Id: Idb785a6c25ee02578ee90254a0d6dd137a0eb6d6