Allow to disable etag generation and implement optional negotiation

- This allows to disable etag generation (still enabled by default)
- Allows to externalize content negotiation easily with a module like 
https://github.com/federomero/negotiator (disabled by default)