[IR] Additional cleanup + generalization of unboxing pass.

* Cleaned up unboxing analysis a bit more by removing hardcoded
  assumptions about float-type unboxing. Should be easier to add
  unboxing for additional types in the future.

* Added ability to store booleans in "unboxed form" for use in
  branches without calling isTrue/isFalse on boxed ruby values.

  For the interpreter, we continue to use "boxed booleans" since
  they are cached one-time true/false objects to prevent
  proliferation of temp-var arrays in the interpreter loop.

* More rubyspecs now pass with unboxing turned on -- still several
  failures that need working through.