set length on body override

when you do:

```js
this.body = 'something';
this.body = 'something longer';
```

then the content-length won't be set. still won't let you change content-type, though.

i actually don't like how the code is written - i'd rather do a big if/else vs all those `return`s