Reading SDA/SCL data using Wire

Whitworth:
Out of interest, is this a fairly efficient way to request information from the device?

Well, what do you mean by "efficient"? Normal I2C takes around 75 uS per byte, although it is more efficient to do "batches" because sending the address takes the first byte.

If you add a line after Wire.begin:

Wire.begin ();
TWBR = 12;

... then one byte takes around 28 uS. That's not too shabby. It would depend on whether the target device supported it.