Issue #2165475 by damiankloip, dawehner, martin107, tim.plunkett, jibran, xjm, Jalandhar: Provide a generic class resolver.
Issue #2026431 by YesCT, dawehner, Crell: Make ContentNegotiation a 'internal' service, used only by the router, so that core or contrib can implement real negotiation.
Issue #2068471 by dawehner, Crell, tim.plunkett, jibran, fubhy, larowlan: Normalize Controller/View-listener behavior with a Page object.
Issue #1963470 by effulgentsia, Crell, tim.plunkett, larowlan: Move controller derivation to route enhancers (and just that).
Revert "Issue #1938980 by Crell, rootatwc, tim.plunkett: Move controller derivation to route enhancers." Temporary rollback; this broke AJAX paths. Working on better test coverage. This reverts commit 221099b5.