Merge pull request #4 from akaptur/generator-syntax

Use py2/py3 compatible generator syntax
Factor out block unwinding code
factor our block popping
Unwind except handler, if we have one

Note that except handler is different than setup-except
This code is Py2 specific

This is the equivalent of fast_block_end in ceval.c, and it works pretty differently in python 3.
Implement py3 block unwinding

This is the equivalent of fast_block_end in ceval.c
The except-handler block doesn't have a block handler

In ceval.c, except-handler is pushed onto the block stack with a handler of -1.  I think this -1 is a C-ism for False/None/not applicable.  We'll never jump to the handler of an except-handler block; except-handler is always unwound by the unwind_except_handler method.

Except-handler is a weird beast, an "implicit block" that doesn't map to any opcode.  (It has a byte value of 257!) See [this thread](https://mail.python.org/pipermail/python-3000/2008-May/013740.html) for an explanation of what's going on here.  As far as I can tell, Antoine's patch was implemented just as he describes in his initial email.
Rename except to setup-except

This is to be more explicit that in Py3, there's both "setup-except" and "except-handler".
Implement WITH_CLEANUP in Python 3.
Implement END_FINALLY for Py3

In python 3, END_FINALLY is responsible for a little more work.  If a context manager should suppress an error, WITH_CLEANUP doesn't pop the exception off the stack.  Instead, it pushes a new 'why' code, WHY_SILENCED, onto the stack, and leaves the popping to END_FINALLY.

Context managers always end with an END_FINALLY in py3, even though they don't start with a SETUP_FINALLY.  Context managers in py2 don't end with END_FINALLY, so this code won't be executed with context managers in py2.
SETUP_WITH creates a 'finally' block in py3

The only difference in py2 between a 'setup-with' and a 'finally' block is that the 'setup-with' block normalizes an exception.  We can probably consolidate this to eliminate the setup-with in py2.
Prepare to write py3 RAISE_VARARGS

RAISE_VARARGS is really different across versions.  We won't try to integrate them into one function.
Implement RAISE_VARARGS for python3.

do_raise could probably be cleaned up a bit and maybe reused in the py2 RAISE_VARARGS.
Implement new test of exception causes for PY3
Merge pull request #6 from akaptur/python3

Python3
Make it easier to run coverage measurements.
Fix (nearly) all the pep8 violations.
Get the PRINT opcodes right, and tested.
Improved handling of method invocation, including error conditions.
Improve the __repr__'s of our objects.