Add scale_pcov argument to scipy.optimize.curve_fit
ENH: optimize/curve_fit: rename scale_pcov -> not absolute_sigma
TST: optimize: add test for curve_fit pcov scaling
BUG: optimize: return a matrix if indeterminate variance

The documentation says pcov is a matrix, so it may be confusing to have
it be a scalar in some pathological cases.
Merge pull request #3098 from pv/curve-fit-yerr

ENH: optimize: specifying absolute errors in curve_fit

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.