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.
fix args parsing of types like any(any)(any)
do not emit nil for functions that return void
Merge pull request #42 from yast/void_functions

do not emit nil for functions that return void
Merge pull request #44 from yast/fix_args_parsing

fix args parsing of types like any(any)(any)
YCP AST: Replace CompilerContext#{drop,keep}_whitespace

Replace CompilerContext#{drop,keep}_whitespace with a more generic
method. This is needed because we'll have more values than :drop and
:keep soon.
YCP AST: Rework CompilerContext#whitespace

Instead of a simple :keep/:drop flag, CompilerContext#whitespace became
a tuple of 4 boolean values specifying which whitespace should be
dropped in detail. This will be used later to remove e.g. whitespace
above the first/below the last statement of a function.
YCP AST: Centralize compiling when whitespace is kept

All statement sequences that we want to compile with whitespace kept are
now compiled using a single function. This will allow us to tweak the
behavior at one place.
Remove whitespace before the first/after the last statement

This prevents some ugly empty lines.
Remove trailing whitespace
YCP AST: Add missing space in DefBlock#always_returns?
YCP AST: Comment and code improvements inside the |Type| class
Merge remote-tracking branch 'origin/master' into elsif

Conflicts:
	lib/y2r.rb