refactored code, added JUnit tests

The `ConvexHullFunction` interface should be moved to jzy3d-api package, so that the API package is not dependent on convexhull provider. 

I've replaced the `Point2f` by AWT's `Point2D` which allows using Double and Float points at the same time. `Stack` was replaced by java's standard `Deque` (or more general `Queue` interface could be used),  so `ConvexHullFunction` is now the last to change.