ports: expose all ports in OpenFlow0x01
ports: implement all ports for OpenFlow0x04

In the process, move marshal code into its own module so it's no longer
spread out everywhere.
ports: don't allow OFPP_TABLE in installed flows

As per the spec, OFPP_TABLE is only a valid pseudoport when used in a
packetOut message, so don't allow a flow to be installed that uses
OFPP_TABLE.
ports: Expose all common pseudoports in abstraction layer

Frenetic requires more than the previously exposed output options for
packets. In particular when compiling star, it may be necessary to send
a packet back out its input port specifically in the case of zero
iterations. While moving things around to InPort actions, it was
convenient to expose all the other shared pseudoports as well.

The point is to not hide too many things too early. An OpenFlow
abstraction layer should not hide core concepts of OpenFlow. It should
try and make them easier to use.
ports: don't generate Table for arbitrary PseudoPort instance

Table can only be used in a PacketOut. Just don't generate it for now.
Merge pull request #120 from frenetic-lang/ports

Conflicts:
	lib/OpenFlow0x04.ml
	lib/SDN_OpenFlow0x01.ml
	lib/SDN_OpenFlow0x04.ml