Merge pull request #123 from frenetic-lang/dehop

Kinder, simpler dehopification + faster optimization pass Edit
Remove Links from NetKAT quick check.

For now we only generate local policies
Fixed to pretty-printer

Fixed to gel with Nate's update to parser
Merge pull request #124 from frenetic-lang/pretty-tests

Fixes to pretty-printer
auto: fix big program issue in quickcheck

Resizing wasn't aggressive enough in for AST arbitrary instances.
Trees are exponential, and `n - 1` is linear. Replace the resize
function with:

  n / (1 + Random.int n)

to increase the likelihood that ASTs will get smaller the deeper down in
the data structure an arbitrary instance is called.
(cherry picked from commit 6f3bfbe01718d9a29c8d2498e23729ac3a17e38b)

Conflicts:
	quickcheck/NetKAT_Arbitrary.ml
pretty-printing enhancements

- added a function to re-associate contructors so that pretty-printing
  outputs fewer parentheses
- added break hints to pretty-printers
- removed whitespace before ";" in pretty-printer for Seq
Merge pull request #125 from frenetic-lang/pretty

pretty-printing enhancements
De-functorize, refactor NetKAT

* Defunctorize the compiler and such. We were only half functorized
  (e.g., we did not functorize SDN_Types.flowTable ) and this was only
  being used for unit tests, where defining some helper functions will
  work just as well. I'm happy to re-functorize later, but for now it
  just adds clutter.

* Eliminate NetKAT_ prefix for many files:
  - Types
  - Lexer
  - Parser
  - etc.

* Split Types into three modules:
  - Types (ASTs and auxiliary types)
  - Semantics (eval function)
  - Pretty (pretty printing)
Fixed compile error

@seliopou please review
Detangle conflicts
Testing and small compiler tweaks

* Put port modification last in Action.to_netkat

* Add unit tests for flow tables

* Add a unit test for Vlans
minor refactor
Detangle conflicts and repair pretty printing.

Conflicts:
	lib/NetKAT_Types.mli
	lib/SDN_Headers.ml
	lib/Semantics.ml
	lib/Semantics.mli
	quickcheck/NetKAT_Arbitrary.ml
	test/NetKAT_Pretty_Tests.ml
Detangle conflicts
Create a branch for pull request
choice: make it compile
merged in choice branch