Generate the banner in Ruby AST, not YCP AST

It is simpler and blends better with current comment-handling code.
Ruby AST: Implement #to_ruby and #single_line_width using wrappers

The wrapper methods are reusable. I'll take advantage of that in the
next commit.
Emit the encoding and banner comments before any other comments
Handle doc comments bit more nicely

Before this commit, there was an empty line at the beginning of
translated doc comments. For example, comment like this:

  /**
   * doc
   */

was translated as:

  #
  # doc

This commit fixes the problem.