add symbol table overflow check

Since raising an error might intern a few new strings, some symbols need
to be reserved. 8 should be sufficient.

If the real limit has been reached, mrb_bug() is called.
remove ci->nreg initialization from cipush()
attr_reader and attr_writer should return nil
move mrb_proc_new_cfunc_with_env() to the core
refactor valid instance variable name check
implement attr_reader and attr_writer in C; use cfunc closure to speed-up
Refactor obj_is_instance_of() in kernel.c
Refactor mrb_obj_is_kind_of_m() in kernel.c
Merge pull request #2580 from suzukaze/refactor-kernel.c

Refactor kernel.c
Use mrb_str_cat_lit() instead of mrb_str_cat_cstr() for string-literals.
Merge pull request #2581 from cubicdaiya/issues/use_lit

Use mrb_str_cat_lit() instead of mrb_str_cat_cstr() for string-literals.
save and restore arena index to prevent arena overflow.
Merge pull request #2582 from iij/pr-attr-accessor-save-arena

save and restore arena index to prevent arena overflow.
get rid of shadowing variables

Mostly by renaming the shadowing variable.
If a shadowing variable was deleted,
the shadowed one can be used instead.
Merge pull request #2583 from cremno/get-rid-of-shadowing-variables

get rid of shadowing variables
rename a local variable current_node -> nodetype; ref #2583
avoid iseq allocation from static irep binary. it reduces 424KB allocation for mrbtest
wrong iseq conversion flag
instance variable name validation based on <ctype.h>; fix #2584
get rid of shadowing variables (mrbgems)

Mostly renaming, except that the definition of struct accessor methods
is now done in a new function.