Improve Data.Predicate.Readable.

In particular provide a proper way to parse lists of values and be
efficient w.r.t [Char].
Rename Data.Predicate.Readable to Data.ByteString.Readable.
Respond with allowed methods.

When a group of routes for a certain path does not support a certain method,
include the allowed request methods in the response via the 'Allow' header.
As per RFC2616 on 405 responses "The response MUST include an Allow header
containing a list of valid methods for the requested resource."
Add some haddock comments and tweak .cabal file.
Update README file.
Rename README.lhs to README.md.
Fix .cabal file.
Remove -Werror.

Hackage refuses uploads with -Wall -Werror combination, pointing out
package stability issues when GHC adds new warnings in future releases.
Rework semantics of Params.

ParamOpt will now fail if the parameter is present in the request but
can not be converted to the target type. Previously we succeeded using the
default value in this case.
Open question is how to cache in ParamOpt?

Parameter now only uses the default if the parameter is not found, not
when the conversion function fails.

The (wrong) Maybe instance of Readable is removed.
Add caching to ParamOpt.
Add Snap.Predicates.Headers.

Refactor code logic into Internal module and re-use it in Params,
Headers and possibly future modules (e.g. Cookies, Body).
Use singular for module names.

Lots of renamings, e.g. Snap.Predicates -> Snap.Predicate.
Fix module names in Tutorial.
Add more media-types.
Add HasHdr and HasParam.
Small optimisation to parser code.
Syntactic cleanup.
Change list instance of Readable.

Instead of parsing comma-separated values, parse proper Haskell lists,
i.e. with brackets and potentially nested.
Use attporasec to parse Readable [a].
Use attoparsec throughout Data.ByteString.Readable.