Don't break in unlabeled blocks; balance switch scope

Fixes a couple of bugs that prevented the test262 test harness from running.
- An unlabeled break was able to break to an unlabeled block. This messed up breaks in most loops, since most loops have a block  statement.
- The switch statement included a call to pushScope that wasn't matched by a call to popScope.

Example code that is fixed:
````javascript
while (true) {
  break;
}
````

````javascript
{
  let x = 'a';
  {
    let x = 'b';
    switch (1) {
      case 1:
        console.debug('1');
        break;
      case 2:
        console.debug('2');
    }
    console.debug('x in b: ' + x);
  }
  console.debug('x in a: ' + x);
}
````