Fix Pattern diff.

`Pattern.diff` was not right. This fixes a bug in the fallthrough elimination optimization as witnessed by the following NetKAT program:

```
(filter not (ethTyp = 0x5ff); filter port = 1) | 
(filter ethTyp = 0x806; port := 2)
```

@jnfoster let me know if this looks like it makes sense.