https://github.com/mirah/mirah/commit/e00ab4bc6a3df6853eb3b951955660f378ef3a35
cherry picking 97cee78, a little tricky. Figured it out--and tests pass fail are the same. https://github.com/mirah/mirah/commit/34af825a1bc3f93568f9380bc9a1cc1562c1395b
cherry picking 2642a28 cake
cherry picking 886bc5f merges cleanly, checking tests
tests don't pass because type_factory isn't global anymore (w00t~sorta)
fixing