arraypad fixes

Previously it was not possible to do the following:

    pad(array, 2, mode='constant', constant_values=1.1)
    pad(array, 2.0, mode='constant', constant_values=1.1)
    pad(array, np.array((2, 2)), mode='constant', constant_values=1.1)
    pad(array, np.array((2, 2)), mode='constant', constant_values=np.array((1.1, 1.1)))
    etc.
They can't both accept float values if `pad_width` raises a TypeError when floats are used ;)