text: Title: invalid colour conversion raises error rather than warning
  Body: This seems like a bug in colour conversion.
  ```python
  lab2rgb([0, 0,  28.0])
  ```
  raises `TypeError: 'numpy.float64' object does not support item assignment`
  
  while:
  ```python
  lab2rgb([0, 0,  27.0])
  ```
  works fine.
  
  This difference is because the former results in a negative z-value in _lab2xyz conversion. The intended behaviour seems to be to assign this to 0 and return the n_invalid count back to the caller for warnings to be raised.
  
  However, the attempt to reassign is performed by indexing on the z value (a numpy.float64 object) which raises the type error in the last line here.
  
  https://github.com/scikit-image/scikit-image/blob/2336565966acdcf2bfd6e6a7322c6f1f477fca8e/skimage/color/colorconv.py#L1173C1-L1182C23
  
  A simple fix is for this last line to read z=0 rather than z[invalid] = 0
  
  Should I submit a pull request for this?