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.
Add 'support' for old-style classes by converting the new-style classes for now
Make the del statement work inside functions
'raise Exception' behaves the same as 'raise Exception()'

The python stdlib apparently uses a bunch of old-style ways
of doing things.

Instead of doing the throwing directly in the generated IR, call
a runtime function raise1 which will take care of the semantics
of checking the type of the raised object, etc.
Generate tracebacks correctly for 'raise' statements
Add sys.builtin_module_names

For os.py.  Currently just do it by inspecting the set of modules
at the end of the runtime setup; CPython does it by examining the
"import inittab".

Required adding str comparison methods so they can be sorted.

bonus: add errno module.
Handle bare 'raise' statements

Previously, a non-satisfied except filter would cause the traceback
to be lost, since we were using the one-argument 'raise exc' form.
Move the checksum to the beginning of the pyc

Now more resilient to truncated pyc files; got into a bad situation
where the parser crashed, wrote out a half-pyc file, which wasn't
judged to be invalid.
Make 'from a import b' throw ImportErrors

Before was throwing AttributeError, since we were just translating it to:
import a
b = a.b

Now there's a special importFrom runtime function that does essentially
the same thing, but throws the proper exception.
Oh, no this was the issue: we were writing out valid-looking but corrupt pyc files if the parser crashed.  Now leave the files as corrupt if the parser crashes
list.extend
add unbound instancemethods