AST::Context#var_names_in_scope: Do not break on {File,Module}Block

FileBlock or ModuleBlock are always at the end of the chain, so a break
when encountering them is not needed.
s/var_names/variables/ in few places

Changed on places which had more to do with variables then their names.
Implement While#variables

This way we can get rid of one class test.
Context#module_name: Small refactoring
Context#variables_in_scope: Small refactoring
Parser: Add more whitespace
Consider function arguments as local variables
Small refactoring of |Builtin| attributes

Before this commit, all the arguments and the block were stored in the
|children| attribute. Now they are split into |args| and |block|. This
makes the |Builtin| class code nicer and will allow us to handle block
arguments more nicely in the future.
Store block arguments in |UnspecBlock|/|YEReturn| nodes directly

This makes more sense than storing them in a hackish way in the
|Builtin| node, like the ycpc-produced XML does.
Add |symbols| attribute to |YEReturn|

This makes it possible for |YEReturn| to play a role in scoping.
Add arguments of a block to its symbol table

This makes the arguments part of the scope and essentially treated as
local variables.
Make |YEReturn| part of the block chain

Most importantly, this makes arguments of |YERetrun| nodes it part of
the scope chain.
Fix code determining whether a variable should be @-prefixed

Before this change, global variables references inside functions were
not @-prefixed.