minimize usage of UIElementMetrics; remove unused methods from UIElementMetrics
optimize drawing when cross-hair changes

before this change, when the cross-hair changed and both the old and
the new cross-hair point were on the same tile, the entire tile was
redrawn.

with this change, only those points are redrawn that are absolutely
necessary:
- if the old and the new cross-hair point are horizontally or vertically
  adjacent, then only the old and the new cross-hair point are redrawn
- if the old and the new cross-hair point are diagonally adjacent, only
  the points are redrawn that are located inside the rectangle whose
  corner points are the old and the new cross-hair point