Changed LocalCompiler to use heterogeneous fileds
Push through Semantics
hetero: document use of fieldslib in code
hetero: fix bugs in pretty printing

This commit fixes two bugs in pretty-printing:

  * The code was pretty-printing a physical location as "location = x",
    when it should have been "port = x"

  * The code was pretty-printing tests and mods using the same
    field-location separator, i.e., "=". Change that to ":=" for mods.
hetero: fix pretty-printing issues

  * All interger values should be printed as unsigned integer types.

  * Change ethType to ethTyp and vlan to vlanId
hetero: get arbitrary instance working again
hetero: use Header.compare instead of Pervasives

They are synonyms for each other, but consistent use will make
refactoring easier in the future.
hetero: Move empty Header to NetKAT_Types.Header

Can reuse this in other place, in particular tests.
hetero: move constructors to NetKAT_Types

Also use the type within modules in LocalCompiler as if the Header
type is abstract.
hetero: Move HeadersCommon.to_string to NetKAT_Types
hetero: add syntax for pipes, related tests

To send a packet to a pipe, do this:

  pipe := <id>

Where <id> is an identifier.
hetero: use int32 for port, print as unsigned

All constants in policies are unsigned, and should be printed out as
such.
Kill groups for now
Detangle conflicts
Add support for bitmasks
Fixes to patterns in LocalCompiler
Merge pull request #252 from frenetic-lang/hetero

Conflicts:
	_oasis
	_tags
	lib/META
	setup.ml