[WIP] Flexible fit functions
This addresses a point in #193 - to increase the flexibility of aperiodic and periodic fit funcs by allowing custom functions and to expand the available functions.
The fit funcs are defined by fm.aperiodic_mode and fm.periodic_mode when a the fit object is initialized. The periodic modes will be expanded to accept skewed_gaussianand double_exponential (to-do). In addition to strings, custom funcs will be passable (i.e. FOOOF(periodic_mode=custom_func)).
There is still a lot to do here, specially updating _fit_peaks and _fit_peak_guess, since they both expect the 3 parameter gaussian function. There are a lot of other places where the 3 parameters periodic mode will need to be updated (control+f '3' to see all the places where the 3 param mode is expected). Variable name with gaussian or gauss should also be updated to something like periodic to generalize.
cfa8a2b adds skewed_gaussian_function. It takes the same parameters as gaussian_function, with an additional alpha parameter to control the skew. This implementation multiplies the normal gaussian by a skewed cumulative distribution function. A different solution may better allow setting the center and width of the skewed result.
