Extract attribute caching mechanism from Runner model into concern

Summary

We should extract the attribute caching mechanism added to the Ci::Runner model in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16756 to a concern.

Reasoning

This would allow us to use this mechanism in other places as well.