1D ``np.linalg.norm`` preserves float input types, even for scalar results
--------------------------------------------------------------------------

Previously, this would promote to ``float64`` when the ``ord`` argument was
not one of the explicitly listed values, e.g. ``ord=3``::

    >>> f32 = np.float32([1, 2])
    >>> np.linalg.norm(f32, 2).dtype
    dtype('float32')
    >>> np.linalg.norm(f32, 3)
    dtype('float64')  # numpy 1.22
    dtype('float32')  # numpy 1.23

This change affects only ``float32`` and ``float16`` vectors with ``ord``
other than ``-Inf``, ``0``, ``1``, ``2``, and ``Inf``.
