Improve docs for buffer.toString and buffer.copy

Improve documentation for buffer.toString and buffer.copy per issues #8859 and #8857.
Ok, that doesn't necessarily answer my question, it's more like this:

 * `.slice(0, "foobar")` why shouldn't we `throw` a `TypeError` on this case?
 * If we don't `throw` why doesn't it behave like the coercion in the browser, where `'foobar' >>> 0` would be 0 for that field?

```javascript
> (new Buffer("Hello World")).toString('utf8', 0, 'wtf')
'Hello World'
> (new Buffer("Hello World")).toString('utf8', 0, 'wtf' >>> 0)
''
```