split IPointCollection into a readonly class and an editable one. refactor geometry test cases.