Adding some parameter checking, to catch undrawable canvases.

Added some tests to check that it works for different shaped rectangles. Flushed out a couple of bugs with rows/columns and x vs y's.
Fixed a bug with x and y that I thought I saw yesterday.
Initial cut of a rectangle, which is for all intents and purposes  four lines...