Add caching support to Geohash Cell Filter

closes #5462

a few things not sure:
* currently it's hard code to cache if the `precision` is larger than `1000km`, should we add a config for this?
* Should we separate the builder and parser to 2 files to be consistent with other filter builder/parser?
* the `GeohashCellFilter.create()` is only used in this class and only in the parser, should we move that to the parser