Fixed a bug causing unit tests to fail in my installation: the declaration of runtimeCall in stdlib.bc had a different name in place of `class.std::vector`, so looking the type up by hard-coding its name results in a type error when the instruction calling `runtimeCall` is constructed.
Merge pull request #105 from tjhance/small_bugfix

Fixed a bug causing unit tests to fail in my installation
Fix a PHI-handling bug in the interpreter
Handle statically-resolving functions with defaults
Fix up a bunch of problems with definedness analysis

Not sure how these didn't show up before...
Move binexp handling into the type-specific behavior

Before it was part of the (type-agnostic) AST-walker, which didn't make sense.
The type analyzer now better supports closured variables

thanks Marius for the report
Only defined locals go into the class dict

Before we would write all local names into the class dict;
this is close, but was including undefined names.

Have to get help from the IR generator to determine the live names,
so add a LOCALS opcode (CPython has a similar one), and use that to
generate the dict that a classdef returns.

The current support is not quite enough to support the locals() function,
since even though we have that information available at the IR generator,
it's not easy to make it available to the runtime.
Pass closures through classdefs

Ie if a class is defined in a function, and that class contains
a function which references variables from the enclosing function,
previously the classdef would not pass the closure through and
things would fail.

Now classdefs (and other scopes) can pass through closures even if
they don't add their own variables to the closured-set.

Also, fix some bugs along the way.
implement delete attribute by reorganize hidden class
modify the procedure of looking up descriptor and add some comments