Fix #2198: Attr assign instructions force a frame push

* As noted in the github issue comments, access protection
  checks seem to currently fetch the caller's self via the
  frame stack. This means that any scope that has instructions
  that requires access checks will force a frame push for that
  stack.

* For this patch, I have added a fix for attr assign instruction
  which seems to be the only instr that seems to directly call
  Helpers.invoke(..) which then calls the access protection methods
  in RubyClass.

  We need to audit if other call instructions require the same
  fixes.

* A better fix would be to fix Helpers.invoke(..) to accept an
  additional argument (caller self) which may be available at the
  call site without accessing the frame stack.

* Added a regression spec that fails without the fix in this patch.