Apparently, the linear least squares functions gsl_multifit_linear_svd
and gsl_multifit_wlinear_svd were replaced by
gsl_multifit_linear_tsvd and gsl_multifit_wlinear_tsvd respectively,
even though the original function names still exist. This fixes a
compilation problem.

Workaround broken lisp-unit::assert-true and conditionalize away tests
for Legendre functions that are no longer present in GSL 2. This
reduces the number of errors when running (asdf:test-system :gsll).

Function #'jacobian calls GSL2 function gsl_multifit_fdfsolver_jac
with a second optional argument, this argument is the matrix into
which the jacobian is written. If it is NIL, than the matrix is
created with the new function #'make-jacobian-matrix. Covariance
calculation #'ls-covariance calls #'jacoabian as in GSL1, but needs to
pass result to #'mpointer to get a C pointer. To avoid reallocating
covariance matrix repeatedly, call #'make-jacobian-matrix outside the
iteration loop and pass as argument to ls-covariance, as shown in
example #'nonlinear-least-squares-example.

Add key argument :initialize-when-making to defmobject, which controls
whether initialization (by calling reinitialize-instance or some other
function) happens when the make-* function defined by this macro is
called. Choices are
T=yes always
NIL=no
:default-T=optional (default T)
:default-NIL=optional (default NIL)
and the default is T to be consistent with previous behavior.
This is used in the newly defined defmobject 'permutation.

Load GSL library version 19 (libgsl.so.19) in preference to version 0,
if it is available. This version, corresponding to GSL 2.0+, loads but
functions whose API changed have not been tested. This required a fix to
have-at-least-gsl-version which was incorrectly comparing version
numbers.

Abort loading with explanation that GSLL does not yet work with GSL
2. Replace incorrect combination of read-time evaluation and read-time
feature with a regular read-time feature on the symbol :gsl2 for when
support is completed.

Release 2.0 of the GSL library changed the API for many functions, and
this means that the previous versions of GSLL will not load for this
release of the library. This is a start at handling these changes, with
an initial focus on permitting GSLL to load and not yet insuring that
the changed defintions function correctly.
There are two such updates made here:
1) The elimination of multiple arguments in gsl_multifit_linear_svd, and
consequently an internal change to #'linear-mfit-svd.
2) The elimination of the argument n in gsl_sf_ellint_D_e and
consequently in #'elliptic-integral-D.
This report is helpful in identifying the GSL API changes:
http://abi-laboratory.pro/tracker/compat_report/gsl/1.16/2.0/75ebf/abi_compat_report.html

Added definitions to GSLL for new definitions in GSL 1.13:
#'greville-abscissa
#'evaluate-with-derivatives
+simplex-nelder-mead-random+
+quad-golden-fminimizer+
These additions compile cleanly, only evaluate-with-derivatives has been
tested.
This completes the port to GSLL of new definitions in GSL 1.13
as given in the GSL changelog.

With GSL 1.13, the GSL API defines a way to set the parameters for the
MISER and VEGAS Monte Carlo methods. This commit defines two generic
functions, #'parameter and #'(setf parameter), to get and set the
parameters, respectively. It loads but has not been tested.
The previous way of setting the parameters, with macros
> #'miser-parameter and #'vegas-parameter, are conditional to
> #+obsolete-gsl and so do not normally load.

Eliminate dependence on Osicat (which doesn't run on Windows) and use
UIOP instead, which is already installed by virtue of using ASDF. Use
trivial-features and add conditionals for :windows. Based on a
patch posted by Mirko Vukovic.

Definitions for 2D histograms: methods for grid:aref, set-zero, and
conversion of max-range to generic function and methods. The max-range
definitions require modifications to defmfun for including two GSL
function calls in the method. These are untested.

In matrix-product if the transpose flags :transa or :transb are
specified as :trans, the matrix-product-dimensions were computed
incorrectly because these arguments were not passed in. This is
fixed. Reported by Mirko Vukovic.