ShowException only serves HTML Accept header contains text/html

Rather than be concerned with whether a request is an asynchronous browser
request or not it is better to simply consider the Accept header and only serve
HTML to clients that specifically ask for it.

This way you will not find your pure JSON API application splitting out HTML
error messages to your console when using curl :)
ShowExceptions minor refactoring

* Load HTML exception template only if needed
* Only #call is public
* Enumerable body concern in one place