Front door servlet to handle requests for portals and desktops. Requests
that end in 'portalExtensions' are handed off to the UIServlet.
The UIControl tree or content uri for a portal for a requested
desktop is cached after being retrieved from the persistent store. Caches
for user personalized desktops are flushed at the end of a user's session.
Non-personalized desktops stay in the cache until either the cache expires
them based on its ttl value or they are updated using the persistence API.
ContentUris for portals are also cached and flushed using the aforementioned
logic.

If a tree is obtained, it is handed over to the UIServlet to
run lifecycle methods on it. If a content uri is obtained the request is
forwarded to it.