learn_all: learn all unknown src addresses

The learning application as previously written would not always learn
all mac addesses on the network, as it was sending packets to the
controller with an unknown destination rather than an unknown source.
Rather than checking for an unknown destination, the learning
application now checks for unknown sources to send to the controller.

This change will break broadcast traffic, as the check on unknown
destinations was what the application relied on to properly forward
broadcast traffic from the controller. An additional check that the
destination is a broadcast address fixes this issue while leaving the
rest of the code untouched.
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
filter: initial implementation of Pred module

Pred.t is the pred analogue of the app type for policy. It allows you to
create and compose applications that will produce pred updates in
response to network events.
filter: constructor for asyncronous Pred.t updates
filter: add partial application point to async_handler

The handler may want to store the update pipe for asynchronous updates.
The partial application point allows it to do so.
filter: use mk_{and,or,not} predicate constructors
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
learn_all: implement broadcast/flooding on the switch

The learning application now implements broadcast adresses and unknown
destination forwarding (flood) on the switch. Previously, this was
accomplished by sending these packets to the controller.
Merge branch 'master' into learn_all
Fix bug in dependency comparison
Remove Format margin tweaks
tidying
Intermediate checkpoint
Weird. This fixes the immediate bug
Mystery solved. Topological sort does not check for cycles