Use Servlets in-container, Undertow when embedded

This change switches all web requests to use our servlet support when
in-container but keeps things on Undertow and HttpHandlers when
running embedded.

This also adds the HttpServlet and HttpServerExchange objects to the
Rack environment under env['java.servlet_request'] and
env['undertow.exchange'], respectively.