PointGenerator and point generators

1. Add PointGenerator base class.
2. Classes inherit PointGenerator to define specific implementations.
3. UnitTests.