(#1) Track list of filters with each mapping

- Create free_mapping() to free up mappings, refactor to use it
(#1) Update MAP to maintain any filters

- Rework init_mapping() to support cloning an existing mapping and
  selectively inserting the new mapping into the list or not
- Add pcp_append_filters() for joining lists of filters together,
  and clearing out a list when encountering a filter with a prefix
  length of 0
- Enforce a currently fixed limit of 10 filters per mapping
(#1) Refactor filters

- Rework filter struct to be two sockaddr structs for address & mask
- Tighten up filter parsing, assume a prefix of 0 means ignore
  address & port. Also don't allow an IPv4 filter with an effective
  prefix of 0
- Fix bug in tailq iteration when appending lists
- Refactor add_rdr()/prepare_rule() to accept src/mask parameters
- Extend rebuild_rules() to iterate over a filter list creating a
  rule per filter
(#1) Add source filtering to pf rules
(#1) Fix pointer arithmetic bug when traversing options
(#1) Fix bug iterating over optional options