WIP: Rectpolygon with rounded corners

Numpy optimizations are yet to be done.
any reason not to do this as `self.mesh.primitive = 'triangle_fan'`? It is a little bit cleaner, since it uses `mesh`'s built-in checks (if we change something about how `mesh` works that breaks this, using the `.primitive` setter is more likely to throw an informative error here)