The I2C core is really nice, however I think, that there are some problems in the documentation.
There is no example of reading from the standard slave (only more sofisticated case of reading from the memory)
The example of reading from the memory (page 14) is erroneous. There is no waiting for completion of the data reading. It is necessary to wait until TIP=0 after step 4.
Thanks for a nice job!