text: Title: [Performance, tech debt] Merge add_weighted
  Body: We have
  
  ```python
  @clipped
  def add_weighted(img1: np.ndarray, alpha: float, img2: np.ndarray, beta: float) -> np.ndarray:
      return img1.astype(float) * alpha + img2.astype(float) * beta
  ```
  
  and 
  ```python
  @clipped
  @preserve_shape
  def mix_arrays(array1: np.ndarray, array2: np.ndarray, mix_coef: float) -> np.ndarray:
      array2 = array2.reshape(array1.shape).astype(array1.dtype)
      return cv2.addWeighted(array1, mix_coef, array2, 1 - mix_coef, 0)
  ```
  
  Which are similar, and first one does not even use cv2 optimizations.
  
  1. We need to update `add_weighted` with cv2 and proper type casting (we should not cast to float without good reason)
  2. We need to remove `mix_arrays` and `call add_weighted` instead.
  