Module compilation changes

Before this commit, all statements inside a module were put at the Ruby
class level, except assignemtns, which were put into the initializer,
and function definitions, which were translated into method definitions.

This commit unifies treatment of assignmetns and other statements and
puts them all into the initializer. Function definitions stay the same.
This simplifies things a bit and is more consistent with how clients
will be compiled.
Make |I| and |_i| in var escaping tests local variables

This is needed so that they are not prefixed by "@" once we'll start
translating client toplevel vars into @-vars.
Compile client toplevel vars as @-vars

This is the first step to compile clients as classes.
Save the filename in AST

This commit makes it so that the AST root node will always contain a
|filename| property with the translated .ycp file name. If the file name
is unknown (e.g. because bin/y2r translates a standard input),
"default.yml" is used.

The file name is needed because when we compile clients properly, their
name will be derived from it.

Note we can't really use the <symbol category="filename" name="...">
element from ycpc's XML to determine the file name because the parser
always passes a temporary file with "unique" file name to ycpc, not the
original file. This is something I don't want to change (mostly to
ensure multiple instances of y2r can be run concurrently safely while
keeping the code simple).
Compile clients as classes

This will make them available for reuse via WFM.