Add a Reader::fill() method

This method can be used to fill a byte slice of data entirely, and it's considered an error if any error happens before its entirely filled.