Add content negotiation

* Supports HTML, JSON, and YAML