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.