Quite a handful of important but not apparent changes this time:

1. add ABC base class for the (should be user defined) class Ball
   the abstract method getpos setpos are required.
2. many refactoring, most important of which is removing the bad smell of
   getting/setting object attributes (vel and vel_diff) directly. Using a lot of
   getter/setter as a solution is also a bad smell ( see
     http://stackoverflow.com/questions/1022970/getters-and-setters-code-smell-
     snecesary-evil-or-cant-live-without-them)
   so the step method now delegate most work to Ball it self, which it self
   don't need setter/getter
3. add a .gitignore to avoid commiting __pycache__