syntax: implement labelled breaks for `for`.

`for` desugars to `loop` so it is trivial to just desugar to `loop` while
retaining any label.
syntax: aesthetic improvements to the `for` desugaring.
auto merge of #9054 : huonw/rust/labelled-for, r=thestinger

The following parses and works as expected with this change:

```rust
'foo: for i in range(0, 10) {
    for j in range(0, 10) {
        if i + j == 15 { break 'foo; }
    }
}
```