Add a StringLiteral class as a replacement for JavaWriter.StringLiteral

Advantages include:
  * References differentiate between String and StringLiteral
  * StringLiteral.toString() still allows to be directly passed to String.format, et. al.
  * You can get the value back after the literal has been passed around.
`emitAnnotation` can't require a `StringLiteral` because that would assume that the `value()` of the annotation is a `String`, which it often isn't.