Memoize the Clojure::read calls to obtain map keys

According to the benchmarks, this significantly (~50%) reduces field
access time:

  Cached read:

    intPojo: 16 ms
    finalIntPojo: 6 ms
    intField: 1,496 ms

    stringPojo: 11 ms
    finalStringPojo: 0 ms
    stringField: 1,854 ms

  Uncached read:

    intPojo: 16 ms
    finalIntPojo: 9 ms
    intField: 2,782 ms

    stringPojo: 9 ms
    finalStringPojo: 0 ms
    stringField: 3,772 ms

Note that these benchmarks were performed with 5,000,000 iterations,
instead of the default 500,000.