Specifying absolute errors in curve_fit

Continued from gh-448

An option absolute_sigma is added to scipy.optimize.curve_fit, to accommodate the common cases:

- sigma = relative weights, pcov variance estimated from data
- sigma = one standard deviation errors on ydata, determines pcov variances

Also, make the returned `pcov` always be a 2D array. In indeterminate cases, it used to return a scalar, which may not be desirable.