Thanks for the Twitter link, i've reached out to see if he can help.
I did figure out how to do a rudimentary calibration by waiting for a button press and then setting the current values for roll and pitch to "offset" values and "correcting" subsequent readings using them. It works well enough for now, and I can calibrate in different orientations.
The only issue now is that this just uses the magnetometer, I think... I'm only reading &roll and &pitch from IMU.getAhrsData(), i'm not reading the gyro values. So this is susceptible to motion, if I slide the unit from side to side on the table the horizon tilts when it should stay horizontal.