Fix sompilation of Y2R::AST::YCP::Symbol

Before this commit, symbols were compiled as variables without any
regard to context. This was wrong. To see why, consider the following
example:

  void wrapper() {
    integer a = 5;

    integer f(integer a) {
      return a;
    }
  }

The variable |a| inside |f| will be considered an alias of the outer |a|
variable, and thus renamed to |a2| in Ruby code generated for the
|return| statement. However, |f|'s arguments are symbols and their
compilation ignored context, so the argument name remained unchanged in
Ruby code generated for the arument list, leading to inconsistency.

This commit fixes the situation by taking context into account when
compiling symbols. This proved a bit hard, because so far |FunDef| nodes
didn't create any context at all, only |DefBlock| nodes inside them did.
I needed to change this. (The other alternative was to compile the
symbols in the inner |DefBlock| context, but that seemed too hacky.)