Add 'Data.Predicate.with' for convenience.
Add some more snap predicates.

- Various predicates testing the request's "Accept" header.
- A parameter transformation predicate which applies a user defined
  function to all parameter values, which may be useful for simple
  transformations which can not fail. More complex ones are better
  implemented with separate predicates.
Restructure Snap.Predicates slightly.