[IR] Few more performance tweaks to the IR interpreter

* I profiled IR operations in the interpreter loop to get a sense
  of the high-frequency IR operations.  Across 7-8 programs, they are:

attr_assign, bne, b_false, b_true, call, call_0o, call_1f, call_1o,
check_arity, copy, get_field, inheritance_search_const, jump,
line_num, noresult_call, noresult_call_1o, put_field, recv_closure,
recv_opt_arg, recv_pre_reqd_arg, return, search_const, thread_poll,
yield

* It might be beneficial to create specialized cases for these
  instructions in the interpreter loop. This commit adds that support
  for get_field, search_const, and noresult_call_1o. I have done
  a quick job of it -- I will be busy all of this week and just wanted
  to get this committed and pushed. Future commits can clean this up,
  reorg the loop, operations, instrs. etc.

* This further improves performance of the the interpreter on most
  programs by a few percentage points.

  Red-black-tree performance is not within 20% of AST interpreter.
  With additional opt. passes, the IR interpreter performance is
  within 10-12% of the AST interpreter. The collective running time
  of the 8 odd benchmarks is now within 35% of the AST interpreter.

  More tweaks and fixes to come in the coming weeks.