cleanup as suggested by hlint
add support for forbidden
add content-* header checking
add checking for known content-type
add checking request length
support for OPTIONS method
start to handle content negotiation