Add `find_jobstep` (similar to `find_build`)
Add `find_jobstep` (similar to `find_build`)

Summary:
Adds a `/find_jobstep` route to the JS router, which makes 2 API requests, and
then redirects to the build that the jobstep was a part of.

Per previous discussion with @kylec, we might want a jobstep view later, but
this is sufficient for now.

Test Plan:
Messed around with the console a bit on prod:

```
require(['es6!server/api', 'es6!display/changes/links'], function(data_fetching, ChangesLinks) {
  // Change this!
  path_parts = ['find_jobstep', '3de3e410a6bf4841be1f55ce0a3d6742'];

  var redirect_to_build = function(build_id) {
    var build_redirect_func = function(response, was_success) {
      if (!was_success) {
        document.write('Redirect failed');
        return;
      }

      var build = JSON.parse(response.responseText);
      var new_href = URI(ChangesLinks.buildHref(build))
        .addSearch('optin', 1);
      window.location.href = new_href;
    }

    data_fetching.make_api_ajax_get('/api/0/builds/' + build_id, null,
      build_redirect_func, build_redirect_func);
  }

  var redirect_to_jobstep = function(jobstep_id) {
    var jobstep_redirect_func = function(response, was_success) {
      if (!was_success) {
        document.write('Redirect failed');
        return;
      }

      var jobstep = JSON.parse(response.responseText);
      redirect_to_build(jobstep.job.build.id);
    }

    data_fetching.make_api_ajax_get('/api/0/jobsteps/' + jobstep_id, null,
      jobstep_redirect_func, jobstep_redirect_func);
  }

  if (path_parts[0] === 'find_build') {
    redirect_to_build(path_parts[1]);
    return;
  } else if (path_parts[0] === 'find_jobstep') {
    redirect_to_jobstep(path_parts[1]);
    return;
  }
})
```

Reviewers: kylec, josiah

Reviewed By: josiah

Subscribers: changesbot, kylec

Projects: #changes_ui

Differential Revision: https://tails.corp.dropbox.com/D190410

dropbox/changes,dropbox/changes,dropbox/changes,dropbox/changes