Piezo API and Tempo changes

Right at the boundaries of my git fu at the moment; I hope I got this right. Quite a festival of `cherry-picking` and hand-resolving conflicts. 

I wrote a few more tests for the new callback parameter on `play` tonight as well.