dpif: Minimize memory copy for revalidation.

One of the limiting factors on the number of flows that can be supported
in the datapath is the overhead of assembling flow dump messages in the
datapath. This patch modifies the flow_dump interface to allow
revalidators to skip dumping the key, mask and actions from the
datapath, by making use of the unique identifiers introduced in earlier
patches.

For each flow dump, the dpif user specifies whether to skip these
attributes, allowing the common case to only dump a pair of 128-bit ID
and flow stats. This increases the number of flows that a revalidator
can handle per second by 50% or more.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
---
v8: Minor comment improvements.
    Improve dpif-netlink flow serialization.
    Rebase.
    Added ack-by.
v7: Shift UID below the dpif layer.
    Shift UID support detection to earlier patch.
    Handle ukey_creation when key is missing from flow dump.
    Use ovs_u128_equal().
v6: Split out from "dpif: Add Unique flow identifiers."
    Rebase.
v5: Always pass flow_key down to dpif, to improve error logging.
    Fix extraneous netflow_unref.
    Rebase.
v4: Fix bug where UID-based terse dump wasn't enabled by default.
    Fix race conditions with tests.
    Combine dpif,upcall,dpif-netdev,dpif-linux changes into one patch.
    Display whether terse dump is enabled in ovs-appctl upcall/show.
v3: Rebase.