ofproto-dpif: fix some unit tests

port->is_layer3 is uninitialized when patch ports are added, set its
value before the patch port test
Don't update learning table with input from L3 ports
Make Ethernet attribute optional
Fix datapath flow validation
datapath: fix push_eth() action
odp-util: add support for reading push_eth and pop_eth actions from CLI
Partially implement L3 -> L2 switching
datapath: remove debug printk
ofproto: fix a segfault
lib: don't add redundant set(eth()) action
datapath: fix L3 flow creation
ofproto: don't mess with MAC addresses when push_eth

The push_eth action is added _after_ set(eth()) may already have
changed the source and destination MAC addresses.  It's best not to
overwrite such changes.  If no changes were made, they will stay set
to 00:00:00:00:00:00.
lib: implement user space push_eth and pop_eth
bfd: set L2 packet pointer in bfd_put_packet()
ofproto: set L2 packet pointer in handle_packet_out()
vswitchd: document layer 3 port behavior