Oop to Master

I think I'm pretty well committed to doing this in a more oop way with an object for each piece instead of magic voodoo bitmasks or whatever. It's best we think of the pieces as individual objects each with their own rules rather than trying to force fit them into simple (yeah right) value types.