Put hash entries as arguments into |publish| calls

Before this commit, |publish| calls were created with a
|Y2R::AST::Ruby::Hash| instance as argument. We now pass
|Y2R::AST::Ruby::HashEntry| instances directly.

The advantage is that there are no braces in the generated code. When
split into multiple lines, the arguments will also spread more naturally
than in the case of a hash.
Put hash entries as arguments into |Conver.convert| calls

Before this commit, |Convert.convert| calls were created with a
|Y2R::AST::Ruby::Hash| instance as argument. We now pass
|Y2R::AST::Ruby::HashEntry| instances directly.

The advantage is that there are no braces in the generated code. When
split into multiple lines, the arguments will also spread more naturally
than in the case of a hash.
Ruby AST: Make max_key_width setting more pleasant
Ruby AST: Always reset |context.max_key_width| in |Hash|

Before this commit, |context.max_key_width| was reset by |HashEntry|.
This worked OK because the only place where |context.max_key_width|
could be set was |Hash| and it only contained |HashEntry| instances as
children. As a result, |context.max_key_width| was always reset in hash
keys or values themselves.

All this will change because in the next commit we will also make
|MethodCall| set |context.max_key_width|. The problem is that it could
also pass it to non-|HashEntry| arguments, which wouldn't reset it.

To avoid the need to add resetting code everywhere, I decided that I'll
just ensure that |Hash| always sets |context.max_key_width| -- either to
some value, or to |nil|. This way, all entries will get a correct value.
In the future, |MethodCall| will do the same.
Align hash entry arrows in multi-line method calls
Emit |publish| calls without parens

It's a bit cleaner and it is consistent with how similar method calls
(e.g. |attr_reader|) are usually written.