allocate `history_path` dynamically

`PATH_MAX` doesn't have to be defined and if it is, then its value is
usually incorrect (possible buffer overflow).
Use `malloc` and `snprintf` instead to prevent this.

https://www.gnu.org/software/hurd/community/gsoc/project_ideas/maxpath.html
call `mrb_malloc_simple` instead of `malloc`
add Module#module_function
Merge pull request #2478 from dreamedge/add_module_function

add Module#module_function
Refactor sym_equal() in symbol.c
Merge pull request #2490 from suzukaze/refactor_symbol

Refactor sym_equal() in symbol.c
Merge pull request #2462 from cremno/mirb-malloc-history_path

mirb: allocate `history_path` dynamically
remove unnecessary CHAR_BIT != 8 check

mruby uses uint8_t which implies CHAR_BIT == 8.
Use Boolean macro in variable.c
Merge pull request #2494 from suzukaze/refactor-variable.c

Use Boolean macro in variable.c
fix typo with MRB_INT16; fix #2495
Time#to_i and Time#usec should care about mrb_int overflow on MRB_INT16; ref #2495
add MRB_API modifiers to mruby API functions
rename obsolete mrb_special_const_p to mrb_immediate_p
turn string obsolete functions into macros
fix conversion warnings

Those warnings are not enabled by default,
but getting rid of them doesn't hurt.
MSVC: add simple (v)snprintf implementation

_snprintf is not C99's snprintf!

This simple implementation, unlike _snprintf,
always null-terminates and returns the expected
return value (in most cases).
Other C99 behaviors (like format specifiers) require
adding a complete snprintf implementation.
Do we want or need that?

The same applies to vsnprintf (aka _vsnprintf).
change linkage of mrb_str_size to internal

Use RSTRING_LEN to get the length.
Merge pull request #2496 from cremno/remove-unnecessary-char_bit-check

remove unnecessary CHAR_BIT != 8 check
Merge pull request #2497 from cremno/fix-conversion-warnings

fix conversion warnings (in gc.c)