apis - pipeline status, history: pipeline, stage, job, agent job run, material commits, config: pipelines, materials, config repo commits list & diff

#394 

pipeline history api (this gives minimal data thats required)
```
<server>/go/api/pipelines/<pipeline-name>/history/[offset] - optional offset
```
stage history api
```
<server>/go/api/stages/<pipeline-name>/<stage-name>/history/[offset] - optional offset
```
job history api
```
<server>/go/api/jobs/<pipeline-name>/<stage-name>/<job-name>/history/[offset] - optional offset
```
agent job run history api
```
<server>/go/api/agents/<agent-uuid>/job_run_history/[offset] - optional offset
```
list material commits
```
<server>/go/api/materials/<fingerprint>/modifications/[offset] - optional offset
```

#395

pipeline config list api - lists material configs + stage configs
```
<server>/go/api/config/pipelines
```
material config list api
```
<server>/go/api/config/materials
```
config repo commit list api
```
<server>/go/api/config/revisions/[offset] - optional offset
```
config repo diff
```
<server>/go/api/config/diff/<from-commit-SHA>/<to-commit-SHA>
```

#225 
pipeline status api
```
<server>/go/api/pipelines/<pipeline-name>/status
```
Should we verify that ```params[:column]``` has a valid value? This is coming from a web request, and is directly given to an enum method, which will definitely throw up if the value is wrong. When it was a table in the UI, it's different. With an API, it's always better to validate before use, I feel.