Fixes bug in defuzz

Defuzz function was assuming firing strength for each output mf rather
than each rule.
Add area_under functions
Optimize mean_at functions

mean_at for gaussian and bell was doing unnecessary computations rather
than returning the center directly
Fix issue with quadgk

Quadgk return a tuple with first element as integration value
Correct function for area_under for bellmf