Correct return types.

Correct return types both in doc blocks and code if possible.

For methods like etag() I would rather like to simplify the return type from `@return string|null` to just "string" for example, though. Especially where there cannot be any empty valid strings or '0' strings involved.
`null` as error has not the same meaning as empty string as an error