Extract built-in torkenizers to tokenizers.c
Use "tokenizer" for uvector tokenizer variable name
Follow token -> token_cursor name change
Rename token.c to token_cursor.c

It is for following grn_token -> grn_token_cursor change.
Fix a bug that compare operations (<, <=, >, >=) with Time and String

String value is casted as integer and compared. It should also support
"yyyy-mm-dd HH:MM:SS" format.
Fix a bug that not equal operation (!=) with Time and String

String value is casted as integer and compared. It should also support
"yyyy-mm-dd HH:MM:SS" format.
Optimize expression for !=, <, <=, => and > operations

Cast is done in building expression not evaluating expression.
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.
Revert "Optimize expression for !=, <, <=, => and > operations"

This reverts commit dbf31498c88d92a6ffd26721b3c36fdbf329fcd5.

We need to consider reference type column case...
test: migrate to grntest
Split a long function
ii: optimize for small result set (but disabled by default)

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_II_SELECT_TOO_MANY_INDEX_MATCH_RATIO
environment variable:

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

The default GRN_II_SELECT_TOO_MANY_INDEX_MATCH_RATIO is -1. It means
that the feature is disabled by default.

Limitations:

  * CMake build isn't supported yet.
  * Support only exact match.
Support Onigmo build without mruby