Only write notes when changed in mass generator

The call to the note's flush() method only needs to happen when the
destination field's value is changed (i.e. after successfully reading
from the source field and receiving a response back from the service
implementation).
Improve statistics for mass generator

With services now able to return empty filenames, the statistics need to
be fixed up to reflect this, and not just assume that notes without
field errors were all successfully processed.
Add note for future improvement for previewing

While AwesomeTTS does not currently ship with any services that
sometimes cannot play a given bit of text, once it does, a convention
should be started for the correct behavior when previewing something
that cannot be played back (e.g. returning False or throwing an
exception).
Use warning box for mass generation failures

If at least one note in a mass generation set fails, use the warning box
rather than the regular vanilla info box.
Display warning when adding media fails

When attempting to add TTS audio media to a card, if the service returns
nothing, then warn the user as such when closing the window.