2891: Fix bug in Workbench error page test.
2891: API server ApplicationController style updates.

This ports over some of the niceties we've recently implemented in the
Workbench ApplicationController.
2891: API server assigns error tokens.

These unique tokens are both logged and sent along with the response,
making it easier to cross-reference what the client does with what
happens on the API server.
2891: Workbench API client raises structured exceptions.

These changes will make it easier for the rest of the Workbench code
to cope with these errors more gracefully—even if that just means
friendlier reporting of the error.
2891: Workbench returns 404 when API object doesn't exist.
2891: Add index link to Workbench 404 responses.
2891: Add Workbench test for expired API token.
2891: Workbench displays more info about API errors.
Clean redundant conditional from Workbench layout.
2891: Guard against API server errors in Workbench layout.

The goal here is to generally avoid situations like #3031 where
trouble talking to the API server prevents us from even rendering an
error page.  Previous commits made us smarter about logged in status.
This guards against other API errors.
2891: Workbench converts API HTTP errors to API exceptions.
2891: Workbench current_user copes when API server is unreachable.
2891: Workbench renders login exceptions earlier.

These changes are designed to ensure that if there are any problems
getting information from the current API token (other than expected
401 Unauthorized responses), those problems are raised early and
propagated up to the exception handler.  This helps better ensure that
thread state is consistent when we get to later stages of request
processing.
2891: Workbench reliably reloads model columns after failure.

ArvadosBase @columns could get stuck as [] if the API server wasn't
available during Workbench's first API request.  This change ensures
that it keeps trying to reload column information until it receives
good data.
2891: Trying to show a non-UUID in Workbench renders 404.
2891: Workbench details the requested item on its 404 page.
Merge branch '2891-improve-workbench-errors'

Closes #3079, #3080, #2891, #3092.