Make Workhorse MIME multipart pre-authentication lazy
The way Workhorse is currently organized, we eagerly pre-authenticate uploads. This makes sense for routes where we know there will be an upload, but not for the catchall route: eager pre-authentication would mean that we send a POST to GitLab before every request, regardless of whether it has any uploads in it to process.
This is also one of the reasons why the Workhorse "SkipRailsPreAuthorizer" exists: it speeds up the eager pre-authentication by making a mock API call.
In order to change the mock API calls to real API calls (i.e. the goal of &742 (closed)), we need to convert Workhorse to pre-authenticate lazily on the catchall route: only when we encounter a MIME multipart body, and only when that contains a file part, should we then make an internal API call to pre-authenticate that upload.
This issue will be pure refactoring work inside Workhorse, with no visible outside behavior change. We keep the mock API call but we make the calls lazy. Then in a later MR where we introduce real API calls, the diff will be much smaller.