Rect - base class to represent rectangle
Integer or float values are accepted as coordinates


  Rect() - generic constructor, creates a Rect with zero coordinates
  Rect(Rect r) - copy constructor
  Rect(Point p) - creates rectangle with one corner at (0, 0) and
                           another - at coordinates defined by p
  Rect(Point p0, Point p1) - creates rectangle defined by the corner points
  Rect(x0, y0, x1, y1) - creates a rectangle defined by the coordinates of the corner points



  ll (Point) - position of the left/bottom corner
  ur (Point) - position of the right/top corner
  x (integer or float) - horizontal position of the left corner
  y (integer or float) - vertical position of the bottom corner
  width (integer or float) - width of the rectangle
  height (integer or float) - height of the rectangle



  add - Point or Rect must be second operand, rectangle is expanded to include 
        this point or rectange
  multiply - second operand must be Matrix. Matrix transformation is applied 
        to the rectangle



  Assign(Rect r) | (Point p0, Point p1) | (x0, y0, x1, y1) - assigns new values
        to a Rect, the same as constructor
  Shift(Point p) | (x, y) - shifts Rect on a position defined by p or x
        and y values
  Transform(Matrix m) - applies Matrix transformation to the Rect (see Matrix().__doc__)
  Resize(width, height) - resizes rectangle to new width and height
  Include(Rect r) | (Point p) | (x, y)  - expands rectangle to include
        new rectangle or point
  Check(Rect r) - returns True if r overlaps current rectangle
  Check(Point p) - returns True if p is insude current rectangle
  Validate() - corrents rectangle's orientation