tdk: implement in_port rewriting

In the case where the port has been mached and assigned to the same
value, such as in the example policy:

  filter port = 1; port := 1

the compiler will now generate a flow that forwards the packet to InPort
rather than physical port 1.
tdk: eliminate redundant modifications from actions

In the case where a field matches and is assigned to the same value,
such as in the example policy:

  filter ethSrc = 1; ethSrc := 1

the compiler will now generate a flow that does not perform the
modification.