First pass caching taggable content: topics

Instead of reloading all topics every time a select field has to be
rendered with the topics, we cache the data container (array of names
and IDs) and reuse it.

The cache digest is calculated using the updated_at timestamps for all
the topics currently in the DB. This will account for:

* New topics being added
* Existing topics being updated
* Topics being deleted
Fragment cache topics select if no topics selected

If no topics are currently selected, we can safely cache the entire
fragment for the select field (assuming the digest matches).