Piezo improvements

Julian,

These are the changes I am proposing from [this conversation](https://github.com/rwaldron/johnny-five/issues/398#issuecomment-47657644):
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.  
You bet.  In our 12-note western scale, notes are defined by the frequencies they produce.  An "A" in the 4th octave is defined as 440 Hz.  Every note in the higher octave has a frequency of 2x the one below.  So an "A" in the 5th octave is 880 Hz.  

These frequencies are well known.  For instance, do a google search for ["note frequencies"](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=note%20frequencies) and you will find a ton of tables with these well-defined frequencies.  So people working in music tend to know these frequencies off the tops of their heads.  (at least the anchor frequencies: 220, 440, 880)

Keeping a table of duty cycles for the notes, in my opinion, is exposing the guts of the code too much.  The frequency table can be referenced easily where as the duty cycles are a function of frequency: `((1/freq)/2)*1000000` microseconds.