snippet() -> snippet_html()
grn_proc_create() accepts -1

It means that name is NULL terminated string. Name size is computed in
grn_proc_create().
test: use #@on-error directive
tokenizer mecab: use grn_tokenizer_register()
tokenizer mecab: use GRN_PLUGIN_ERROR

ERR ->
GRN_PLUGIN_ERROR
tokenizer mecab: use GRN_PLUGIN_LOG()

LOG() ->
GRN_PLUGIN_LOG()
tokenizer mecab: add tag to log message

The tag is "[tokenizer][mecab] ".
tokenizer mecab: use grn_tokenizer_query
tokenizer mecab: fix function name
tokenizer mecab: append "()" to function name
tokenizer mecab: fix wrong target name
tokenizer mecab: remove needless internal header includes
tokenizer mecab: use GRN_PLUGIN_MALLOC and GRN_PLUGIN_FREE
tokenizer: add grn_tokenizer_query_{open,close}()

Because API consistency. open/close pair is used for creating/freeing
object in groonga.

grn_tokenizer_query_{create,destroy}() were deprecated.
tokenizer: use grn_tokenizer_query_{open,close}
tokenizer: add grn_plugin_mutex_{open,close}()

Because API consistency. open/close pair is used for creating/freeing
object in groonga.

grn_plugin_mutex_{create,destroy}() were deprecated.
tokenizer mecab: use grn_plugin_mutex instead of grn_critical_section
tokenizer kytea: use grn_plugin_mutex_open()

Because grn_plugin_mutex_create() is deprecated.
tokenizer kytea: use grn_plugin_mutex_close()

Because grn_plugin_mutex_destroy() is deprecated.
tokenizer kytea: add "[kytea]" tag to messages