My 5s (Verizon 32 gb; week 39; factory C3) is only about 2 degrees out, and only across its long axis. To level it, I lift bottom, home button edge up about 3/16". The phone does seem to be level across its short axis: In Temple Run (portrait layout only), and with phone on its back, the dude runs straight. In a driving app (landscape mode only), however, the car consistently pulls toward whichever edge the home button is on.
Using Navy's idea, I downloaded and calibrated the iHandy level and this app shows level on both axes and along all four edges. iHandy maintains its calibration even after closing and relaunching the app.
The compass seems to be reasonably close in comparison to my Suunto pocket compass. It does, however, appear to be very sensitive to adjacent magnetic and electrical devices (another iPhone and a Suunto pocket, for example).