ctx.body overwrites status set by ctx.assert
Sometimes you may want to wrap your middleware in try - catch statement.

If one uses ``ctx.assert`` -method inside a try statement, which sets the ``ctx.status``, one might come across with  counter intuitive behavior.

For example:
```javascript
(ctx, next) => {
  try {
    ctx.assert(false, '400', 'this is bad')
  }
  catch (error) {
    console.log(ctx.status) // 400
    ctx.body = 'whoops, the status will be 200 after setting me'
    console.log(ctx.status) // 200
  }
}
```

However, this one works as expected:
```javascript
(ctx, next) => {
  try {
    ctx.assert(false, '400', 'this is bad')
  }
  catch (error) {
    ctx.status = ctx.status // This sets the _explicitStatus to true
    console.log(ctx.status) // 400
    ctx.body = 'now works'
    console.log(ctx.status) // 400 as expected
  }
}
```
