Improve syntax errors when parsing pflang

This patch fixes issue #25.
Preserve uint32 range in arithmetic ops

* src/pf/codegen.lua (read_buffer_word_by_type): Load words as uint32,
  not int32.
* src/pf/expand.lua (expand_arith): Add mod-32 around arithmetic ops
  that can produce out-of-uint32-range values.
Fix codegen scoping bug

* src/pf/codegen.lua (compile_bool): Wrap true continuation in a do /
  end in all cases, to preserve scoping.
Range inference over all arithmetic exps can remove modulos

* src/pf/expand.lua: Add assertion to / and % that RHS is not 0.

* src/pf/optimize.lua (binops): Remove || and &&; they are not present.
  (Range): New helper class.
  (infer_ranges): Infer ranges for all kinds of arithmetic expressions,
  not just packet access.  Elide unneeded modulo expressions.
Merge branch 'uint32'
Add BPF disassembler, fix BPF compilation bug

* src/pf/bpf.lua (disassemble): New function.
  (compile_lua): Print BPF disassembly in verbose mode.  Fix BPF_TAX
  instruction (!).
Merge pull request #25 from Igalia/issue-25-improve-syntax-errors

Improve syntax errors when parsing pflang
Merge pull request #37 from Igalia/disassemble-bpf

Add BPF disassembler, fix BPF compilation bug
Implement symbolic constants.

- Symbolic constants in arithmetic expressions. Add support for
constansts: 'protocol header field offsets', 'icmp type field values'
and 'tcp flag field values'.

- Symbolic constants in logical operations. Add support for constants
names for port numbers. Valid in 'port <port>' and 'portrange <port-port>'
contexts.

This patch solves issue #24.