tightened up the geometry types

- switched over to using slots
- no longer hashable (which didn’t make sense given their mutability
anyway)
- inlined the Point/Size init behavior to skip the super call