Rewrite of the Location class.

This fixes bugs:
* Location.equals(0.0, 1.0) returned false
* Location.distance(invalidLoc, invalidLoc, true) did not return 0.0

Further changes:
* Reuse change() (e.g. simpleDistance() is just abs(change()))
* Reuse isValid() instead of explicit bounds checks
* Simplify change()
* Simplify normalize()
* Use LOCATION_INVALID (= -1.0) instead of magic numbers
* Add just a bit more documentation
Complete Location Javadoc comments and fix equals() semantics.

Location.equals() now also considers two invalid locations as equal, similar to Location.distance() with allowCrazy. This is just for sake of completeness, such a situation will never be encountered in reality.
Use proper IllegalArgumentException instead of NullPointerException in Location.

This exception was never uniquely checked anyhow (and it occurence IMHO always indicates a bug), so no further code changes are necessary.
Use proper IllegalArgumentException message in Location.
allowCrazy is crazy. Get rid of it.
Merge pull request #230 from bertm/rewrite-location

Rewrite of the Location class
Only include valid peer locations in link length probe response.
Make link length probe response less identifying.

By sorting the reported link lengths, we maintain the statistical usefulness
of the data, but do no longer provide information on the particular order of
our peers (which should not be relevant for analysis anyhow).
Don't use allowCrazy: upstream doesn't have it anymore. Assume our location is valid here.