Represent tag tuple keys as strings, not symbols

We currently use symbols as the keys for the hash tuples that store 
tag and tag type data on artefacts. This sometimes results in a mixture 
of both symbols and strings in use, because the tuples are returned from 
the database with string-based keys. This causes problems, as we always 
use symbols in the code to find tag IDs and dedupe tags of the same type.

Rather than use `with_indifferent_access`, the simplest way to fix this
to use string-based keys across the board.