Ruby AST: Pass context to |single_line_width|

Passing context to |single_line_width| is useless now, but it will
become useful in the future. (I plan to implement context-aware wrapping
of expressions into parens, which will make code width dependent on the
context.)
Ruby AST: Define the |priority| method for each node

This method will return node's priority. This is mainly useful for
operators, where this information will be used for automatic wrapping
into parens.
Ruby AST: Pass priorities around in contexts fro #to_ruby

Each #to_ruby method will receive a priority in context. In the future,
it will use it to determine whether it's necessary to enclose the
generated code in parens.
Ruby AST: Pass priorities around in contexts for #single_line_width

Each #single_line_width method will receive a priority in context. In
the future, it will use it to determine whether it's necessary to
enclose the generated code in parens.
Ruby AST: Make decisions about enclosing into parens priority-based

Before this commit, eclosing into parens was a hack. For certain kinds
of expressions (e.g. binary operators), we basically eclosed their
operands whenever they were something non-trivial. This lead to ugly
code e.g. in cases where multiple operators with the same priority were
combined or in common cases like this:

  if (foo != nil) && (foo != false)
    ...
  end

This commit changes the mechanism to a priority-based one. When emitting
code, the priority in current context is known and parens are emitted
only when the expression emitted has lower priority than the priority in
current context. In other words, we emit parens only when they are
strictly necessary.