Introduce low-level caching

I have started to profile the application. I started to make more use of
low-level caching. I have moved more code into the repository controller
concern.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>
Add snapshot to the composed key of the job entity

The identifier for the job entity was only created through the
repository and the metric, but not the snapshot. Without this
the jobs cannot be queried properly.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>
Add identifier parameter to the dropdown creation

The dropdown creation was missing an identifier. Unfortunately,
snapshots need to use a different identifier for a more readable
URL. Hence, this change.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>