Emit long multi-line strings more nicely

YCP allows multi-line string literals. This means that long strings
often get written relatively nicely like this:

  s = "
  This
  is
  a
  long
  string.
  ";

Information about original string literal formatting is unfortunately
lost during parsing. All we know is that there is a long string with
newlines inside.

This commit tries to find such strings heuristically and emit them in a
bit nicer way than we did so far. It splits them to parts (one per line)
and uses Ruby |+| operator to concatenate them.

I also considered other alternatives, but rejected them for one reason
or another:

  * multiline string literals -- rejected because they would interfere
    with indenting mechanism in the emitter

  * heredocs -- rejected because they would interfere with indenting
    mechanism in the emitter

  * string literal combination using whitespace -- rejected because it's
    a relatively obscure Ruby feature and it doesn't work across lines

  * using |[...].join("\n")| -- rejected because other team members felt
    this is worse than using |+|

It's a pity that Ruby doesn't have CoffeeScript's |"""|. It would be
ideal to use here.
YCP AST: Small adjustments of formatting and comment
Ruby AST specs: Add missing context-passing specs for |Hash|
Ruby AST specs: Remove |[...].join("\n")| for one-line strings
Ruby AST specs: s/check_context/check_to_ruby_context/

This is a preparation for a change where I'll introduce checking also
for context passed to |single_line_width|.
Ruby AST specs: Add context-passing specs for |single_line_width_base|
Comments: Pass node associated with the comment to |process_doc_comment|

This is needed bacause YCP doc comments don't contain information about
types of function arguments, but we want to transform them into YARD
comments, which do contain this information. With the node in hand, we
can simply extract the argument types from |node.args|.
initial ycpdoc -> yard translation