Changed `Request::validate()` to throw `ValidationException` rather than a generic `Exception`.
Added dedicated `RequestException` for request errors. Updated `Requester` to use.
Fixed copy pasta grammar.
Added stream error handling to `PUTFile` and updated to use `IOException`.
Changed `File` to use `IOException` for filesystem errors.
Fixed out of date documentation.