Compress geo-point field data.

This commit allows to trade precision for memory when storing geo points.
GeoPointFieldMapper now accepts a `precision` parameter that controls the
maximum expected error for storing coordinates. This option can be updated on
a live index with the PUT mapping API.

Default precision is 1cm, which requires 8 bytes per geo-point (50% memory
saving compared to using 2 doubles). With this default precision,
GeoDistanceSearchBenchmark reports times which are 12 to 23% slower than
the precious field data implementation.

Close #4386