Reads exactly n bytes.
If the data read is nil an EOFError is raised.
If the data read is too short a TruncatedDataError is raised and the read data is obtainable via its data method.
[Validate]