`StagingsController` and its spec look like they've been getting pretty difficult to follow. This PR seems add to this complexity ever so slightly.

It'd be good to extract some of its behavior, especially its private methods, into new classes before adding more branches like these.

Here's one idea:
- extract `StagingsController#log_and_raise_missing_blob` to `MissingBlobError` who knows to log the error
  - `raise MissingBlobError.new(app.guid, blob_name) unless buildpack_cache_path`
- extract `StagingsController#download` to `BlobDownloader`

The advantage of doing this is (some of) the branches, and consequently their specs, will be contained in the new files, making the staging_controller.rb & staging_controller_spec.rb a little easier to follow.

We'd like very much to have this refactoring happing prior to merging this PR.

– Kai (@wsxiaozhang) and Abhi