Finish Point.heading()

The implementation is a bit complicated and I find it somewhat
redundant... I'm open for any ideas as to how to improve it.

Especially the first two blocks, in which I look for the X- and then the
Y-axis to see if the points are parallel to each other and if the point
exists in both dimensions, are repetitive... And yet abstracting the
code to make it DRY would have led to a whole bunch more code. So I left
it that way for now.