Check for non-ast SyntaxErrors

This includes return and yield outside of a function and break and
continue outside of a loop. Fixes lp 1293654.

The problem is that these SyntaxErrors are not encoded in the ast
grammar, so they are not detected when just compiling to ast. You must
compile down to bytecode to catch them. The advantage here is that we
can still check for other kinds of errors in this case, because the ast
is still valid.
3 files changed