apps: Use existing type synonyms consistently

portId is currently a synonym for a VInt.t but that will likely change
at some point to be a synonym for int64. Use the type consistently here,
which may save time later.
apps: Define basic types that apps will use

This commit includes two important type definitions:

  * event - describes the types of events that frenetic applications
    will be exposed to, and will be expected to handle in some way.

  * result - the ultimate result of a frenetic application. A list of
    packet_outs to send to various switches, as well as the new policy
    that should be installed on those switches. It's on this type that
    sequence and union will be defined, and then lifted to a function type.
apps: async interface and combinators

For all intents and purposes, Async_NetKAT.mli is a specification of the
Frenetic application API.

Closes #244.
apps: implementation of netkat async controller