The original implementation generates a list of SDoc then concatenates
them using hcat. For memory optimization, we can transform the given
literal string into escaped string the construct SDoc directly.
This optimization will decreate the memory allocation when there's big
literal strings in haskell code, see Trac Trac #14741.
Signed-off-by: HE, Tao <firstname.lastname@example.org>