In the file MMA7660.cpp there are a number of issues with Wire.requestFrom().
The Wire.requestFrom() should not have Wire.beginTransmission() or Wire.endTransmission().
This in in the funtion MMA7660::read.
There is no need to empty a buffer or stream before using Wire.requestFrom(). When the Wire.requestFrom() returns, the receive buffer in the Wire library does not contain old data.
This is in the function MMA7660::getXYZ, MMA7660::getAcceleration, MMA7660::getAllData.
There is no need for a timeout. The Wire.requestFrom() waits until the complete I2C transaction has finished. The Wire.read() after that, only reads data from a receive buffer in the Wire library.
This is in the function MMA7660:getXYZ, MMA7660:getAcceleration,.