Fix bug in LocalCompiler described in #341.

The issue was that the Pattern.obscures function was *totally
bogus*. It was using a fold_left instead of a fold_right and not
dropping false values from the first table.

Fixing these errors means that

```
filter ethDst = 00:00:00:00:00:02; port := 2 |
filter ethDst = 00:00:00:00:00:01; port := 1 |
filter ethDst = ff:ff:ff:ff:ff:ff;
(filter port = 2; port := 1 | filter port = 1; port := 2)
```
compiles to a correct flow table:
```
flowtable for switch 0:
[{pattern={ethDst=00:00:00:00:00:02},action=Output(2),cookie=0,
 idle_timeout=Permanent,hard_timeout=Permanent}
{pattern={ethDst=00:00:00:00:00:01,port=2},action=,cookie=0,
idle_timeout=Permanent,hard_timeout=Permanent}
{pattern={ethDst=ff:ff:ff:ff:ff:ff,port=2},action=Output(1),cookie=0,
idle_timeout=Permanent,hard_timeout=Permanent}
{pattern={ethDst=00:00:00:00:00:01},action=Output(1),cookie=0,
idle_timeout=Permanent,hard_timeout=Permanent}
{pattern={ethDst=ff:ff:ff:ff:ff:ff,port=1},action=Output(2),cookie=0,
idle_timeout=Permanent,hard_timeout=Permanent}
{pattern={ethDst=ff:ff:ff:ff:ff:ff},action=,cookie=0,idle_timeout=Permanent,
hard_timeout=Permanent}
{pattern={},action=,cookie=0,idle_timeout=Permanent,hard_timeout=Permanent}]
```
Paranoid sync
Checkpoint for debugging
Fix LocalCompiler bugs

The algorithms for analyzing shadows and obscures for prefix tables
had bugs. This commit completely rewrites the Table module, replacing
them with simpler versions that perform correctly on all unit tests
and our regression.
Standarize on lattice names
Eliminate NetKAT_LocalCompiler.Field
Merge pull request #347 from frenetic-lang/obscures-bugfix

Fix for several LocalCompiler bugs