Piezo improvements

Julian,

These are the changes I am proposing:
1. Fix `noTone` so that it actually stops playing
2. Create a `frequency` function that calculates the duty cycle of the tone
3. Use frequencies for notes instead of duty cycles.  

Note that the interface to `play()` doesn't change at all.  It just lets us represent the notes in something that it more familiar to most musicians.  In other words, frequencies can be found easily.  Duty cycles always need to be calculated from frequencies.  

Also note that this PR includes tests but does not yet include examples or documentation.