add Estimator type and interface

This is a nonintrusive modification. By delegating estimate(e::MLEstimator, x) to fit_mle, we no longer need to make any change to original codes.