Add extra field to Str, and parameterise its type.

This is primarily useful for tracking where in a source file data is coming from. Parameterising the tag type (as opposed to hard-coding [SrcSpan]) provides extra type-safety by not unexpectedly changing the behaviour of Eq or Ord.