Issue #148 - fixing last remaining zoom issues:

- calculate all interesting view-stuff inside the zoom controller,
  instead of in the controller. This way, we have better control
  over the location and dimension that should be set;
- ensure proper boundary checks in the zoom controller. Avoid
  possible numeric overflows due to the use of signed integers in
  Swing. The maximum (outer) width the client can be is now 2<<16,
  or 65536 pixels. Perhaps this could be made more flexible in the
  future.
Issue #148: some small boundary checks added.