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.
Seems like this PR would be more useful if methods in JavaWriter such as emitAnnotation actually required a StringLiteral rather than an Object that has its toString called.