Move geo query execute method to a separate GeoQueryClient class

Make collections immutable where possible

Remove try/catch from execute query

Initialize collections with an initial capacity where possible

Make operations null-safe