text: Title: Improve RectangularROI error message
  Body: When initializing a `RectangularROI` using bad values for the `top`, `bottom`, `right` or `left` parameters, the error message is not very helpful. For example, when `top` and `bottom` have the same value:
  ```python
  import hyperspy.api as hs
  roi = hs.roi.RectangularROI(left=1.0, right=1.5, top=2.0, bottom=2.0)
  ```
  The error message is very long (not shown here), and not very intuitive:
  ```python
  hyperspy/hyperspy/roi.py in _bottom_changed(self, old, new)
      923     def _bottom_changed(self, old, new):
      924         if self._bounds_check and \
  --> 925                 self.top is not t.Undefined and new <= self.top:
      926             self.bottom = old
      927         else:                               
  
  TypeError: '<=' not supported between instances of '_Undefined' and 'float'
  ```
  There should be a check early in the initialization, to see if the `top`, `bottom`, `right` and `left` values are good. If they aren't, a more intuitive error message should be shown.