A new buffer swap when needed policy in Surface.

- The Surface renderer now returns a boolean for each frame indicating
if a buffer swap (in double buffered mode) is needed. This in
conjunction with the render-when-needed feature of the Renderer allows
to consume a lot of CPU time.
- This was not easy on Android, needed to do some dirty things… see
GLSurfaceViewExt in the Java backend.
- Added dot-per-centimeter in Android Surface.
- Scroll events now send distances in centimeters.
- UIList now scrolls according to the mouse or finger position and
follows it reliably (all distances computed in physical measurements).
-