Add FreeMarker support

This commit adds a starter, spring-boot-starter-freemarker, for using
FreeMarker view templates.

A new abstraction, TemplateAvailabilityProvider, has been introduced.
This decouples ErrorMvcAutoConfiguration from the various view
technologies that Spring Boot now supports, allowing it to determine
when a custom error template is provided without knowing the details of
each view technology.