WorldViewer: allow toggling between map projections
cleanup: get ready for fromScreen() to return nulls
simplify: AbstractProjection- make subclasses do less overriding
WorldView: when changing map projections, preserve zoom/orientation
WorldView: add isVisible() filter for drawMap()
AbstractProjection: more cleanup/refactoring, and a bug fix

the bug fix is how orthographic coordinates were handled