use HexPosition everywhere instead of calculating back and forth all the time

Usually it is not clear what data is actually needed. Instead of creating
specialized methods for every use case, all data is returned always. The
resulting calculations are all pretty simple and should never cause any
performance issues.