declare @effects_data as a tracked var

Effect object data will be stored as hashes to replace
the $fx->{applied} and $fx->{params} data structures currently used.

The class must be munged, so that on restore, the
methods come from the new class with accessors based on the
hash structure, rather than the previous, with accessors
based on $fx->{applied} and $fx->{params}

On save, don't save $fx->{applied} and $fx->{params}
if saving @effects_data.
format
save @effects_data with class attribute set to ::FX
::FX class is child of ::Effect and will replace it
save/restore new-style effects (class ::FX) seems fine
Now it remains to convert the fxn() function to return the ::FX
object rather than the ::Effect object.
And to *not* save the $fx->{applied} and $fx->{params}.
Effect field creation may have to be fixed.
And all the fifty or so direct references must be
converted... <*gasp*>
convert to method calls
add methods: vol_level pan_level vol_o pan_o
debugging
as_hash() method sets class field if allowed
fix
convert to method calls
minor
as_hash() method sets class field if allowed
fix
fix Object as_hash() method (was returning nothing)
convert to method calls
convert to method calls
doc
alias %fi to %::Effect::by_id
_add_effect(): use Effect object constructor