Fixed up the FlxShapes

Fixed a lot of inconsistency in the FlxShapes. Now the following should be true:

* Width/Height of shapes reflects underlying geometric boundaries (ignores stroke)
* Offset should be automatically set so that object's x/y matches expected position
   * X/Y = upper-left
   * Turn on debug lines, boundaries should be in the middle of the stroke (for a rectangle), etc.
I use it a bunch in my own project I guess. I have a bunch of cases where I have FlxShapes of indeterminate type and I like to do different things depending on what they are.

This saves a call to something like Std.is(myFlxShape,FlxShapeDonut), and as a bonus can be used in a switch statement rather than a bunch of ifs.