Add linear fitting function linfit to polynomial.py

Add a linear fitting function to polynomial.py as described at https://github.com/djpine/linfit.  This include examples that show how linfit works.

Currently, there is no function available in numpy or scipy expressly designed to fit a straight line to a single data set. There are two functions available in numpy and scipy that can be adapted to fit single straight lines to data: numpy.polyfit and scipy.linalg.lstsq. Both of these have drawbacks if the desired task is to fit a straight line to a single data set.
numpy.polyfit and scipy.linalg.lstsq are both slower than linfit: numpy.polyfit is generally a few times slower; scipy.linalg.lstsq is also a few times slower but can be several hundreds of times slower depending on the weighting used and the size of the data set. This is because, in part, both numpy.polyfit and scipy.linalg.lstsq involve matrix inversion while linfit does not. More generally, both numpy.polyfit and scipy.linalg.lstsq have significant overhead associated with the more general fitting problems they are designed to address.

In its current configuration, numpy.polyfit does not allow absolute weighting of the data; only relative weighting is implemented. linfit allows either relative (the default) or absolute weighting (by setting the keyword argument relsigma=False)

In some ways, linfit is a convenience function. An unsophisticated user is unlikely to look for a linear fitting routine for simple (x,y) data sets in functions designed to fit polynomials (polyfit) or linear matrix equations (scipy.linalg.lstsq). Moreover, the overhead in setting up scipy.linalg.lstsq to fit a simple (x,y) data set is not transparent.