between: optimize for small result set

If result set is small and indexed records are large, searching with
index is slower than sequential search. This change uses sequential
search for the case.

You can custom the behavior by GRN_BETWEEN_TOO_MANY_INDEX_MATCH_RATIO
environment variable:

  * -1: Disable the optimization
  * other value: Use the optimization if
      ("# of result set" / "# of indexed records") > GRN_BETWEEN_TOO_MANY_INDEX_MATCH_RATIO

The default GRN_BETWEEN_TOO_MANY_INDEX_MATCH_RATIO is 0.01. It means
that "# of indexed records" * 0.01 >= "# of result set" case is "small
result set" case.

Limitations:

  * "# of indexed records" isn't exact number.
    * It is too rough value.
    * We assume the followings:
      * homogeneous index key distribution.
      * each index key matches only 1 record.
  * Time value is only supported for now.
    * Integer family values and Float can be supported easily.