Implementing drawing the outline

A variable outlineWidith controls the width of the outline.
Changing how the Shapes are constructed.

Changing how the Shapes are constructed which will lead to data
validation when the shapes are made to make sure that the shapes are
valid.
Added validation for Width and Height of a shape.

Stops the height and width be less than zero and to be greater then the
game width or height.
Added validation for x and y coordinates.

Added validation for x and y coordinates to make sure they don't go
above the height or width and to make sure they are not below zero.