Added a "template language" for NetKAT

Commit message below.

One other thing to note is that this cleans up the pretty-printer a little. All tests continue to pass, though you'll need to latest ocaml-openflow to see so.

Run

./katnetic.byte runtemplate examples/templates/Chapter7.kat
./katnetic.byte runtemplate examples/templates/Chapter8.kat

etc.

These are solutions to the Frenetic tutorial, done with the template syntax. They
are a lot shorter than the older solutions.

Basic implementation idea:

- Running a template program produces a NetKAT policy as an output value
- Template language is simply typed and guaranteed to terminate
- Simple, bi-directional type-checker