Add support for IP masks

This pull request adds support for IP prefix masking.

It also refactors LocalCompiler to use PrefixTable instead of PosNeg -- a more flexible representation that will enable us to use more kinds of patterns in the future.
[Is this close to the intended operation](https://github.com/frenetic-lang/ocaml-openflow/blob/ip-mask/lib/SDN_Types.ml#L75)? The join previously implemented would not always produce the least upper bound, but this one will.