remove unnecessary CHAR_BIT != 8 check

mruby uses uint8_t which implies CHAR_BIT == 8.
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)
Merge pull request #2501 from cremno/static-mrb_str_size

change linkage of mrb_str_size to internal
Merge pull request #2498 from cremno/msvc-snprintf

MSVC: add simple (v)snprintf implementation
don't always generate gem functions

If the src and mrblib directories of a mrbgem don't exist or don't
include "usable" files (for tools like mirb), then functions for gem
initialization and finalization don't have to be generated.
fix linkage of range_beg_len and mrb_range_beg_len
Merge branch 'master' of github.com:mruby/mruby
mruby-strip doesn't need mrbgems

Reduces executable size by more than 50% (409->171 KB).
Merge pull request #2502 from cremno/fix-range_beg_len-linkage

fix linkage of range_beg_len and mrb_range_beg_len
Merge branch 'master' of github.com:mruby/mruby
Add write_barrier docs
Merge branch 'add-gc-docs' of https://github.com/suzukaze/mruby into suzukaze-add-gc-docs
added Math.cos and Math.tan test case
write barrier doc update