ENH: Control access to some of the Tck internals.

The goal is to make sure that the consistency of the Tck data is
maintained. To that end the following policy is implemented:

    1) Methods that return the coeffient array return a view instead.
    2) Methods that return the knot points list return a shallow copy.
    3) Methods that return the domain list return a shallow copy.
    4) Methods that return the degrees list return a shallow copy.
    5) The knot point arrays are made not writeable.
    6) The domain list elements are tuples of numbers, hence immutable.
    7) All internal variables get the '__' prefix.

Note that the returned coefficient view can be used to change the
coefficients, and it can even be reshaped (bad idea), but the shape and
dtype of the internal array will remain fixed.
MAINT: Remove unused BSpline and ConversionError.
REF: Refactor _asvalid_k.

Also provide separate nonneg_int function for use in other places
as well as _asvalid_k.
REF: Rename the Tck class to BSpline.

Amazingly, BSpline (with caps) is not currently used in scipy. Tck is too
close to Tk/Tcl and most easy three letter acronymns are used somewhere.
For special cases like uniform b-splines I'm thinking UBSpline. Furthmore,
I want to change the argument order and Tck strongly suggests (t, c, k).
REF: Change argument order of BSpline.

The new order is almost the same as in the statsmodels BSpline class but
with degree instead of order. The new order is (t, k, c), where t are the
knot points, k are the degrees, and c is the coefficients.  The virtue of
this order is that c can have a default value of None, which makes for a
useful domain only class. Getting all the wanted functionality by, say,
inheriting from a domain class isn't that easy to do and this is pretty
easy.
REF: Combine _asvalid_{t,k,c,d} into single function asvalid_tkcd.
REF: Break BSDomain out of BSpline and use informative names.

It is cleaner to have the class indicate the presence/absence of
coefficients rather than a None value. It is also neater since
comparisons for equality are easier to decide on for knot points than
for arrays.

The name of the attributes have been made more informative:

    t -> knots
    c -> coef
    k -> degrees
    ...

The bsplval function now returns an array when the domain dimension goes
to zero rather than a BSpline object. This is less likely to confuse and
bother users than needing to access the coefficient attribute.