C++ compilability -- make mrb_object() macro return an RObject, not void
Fix Hash#shift return value from Hash to Array
C++ compilability - don't define types inside others

The following is legal code in both C and C++:

  struct foo {
    struct bar { int a } x;
    int y;
  };

...however in C++ it defines a type called "foo::bar" instead of "bar".
Just avoid this construct altogether
Add cast to remove "cast from pointer to integer of different size" warning
Helper functions for st_foreach() return "enum st_retval" not "int"

Just making this a bit more consistent throughout the code
C++ compilability -- "try" is a keyword, avoid as variable name
C++ compilabilty -- "new" is a C++ keyword, avoid it
C++ compilability: "not" is a C++ keyword, avoid it

see http://en.cppreference.com/w/cpp/language/operator_alternative
fix mrb_gc_mark_ht_size() and mrb_gc_free_ht() types

mrb_gc_mark_ht_size() and mrb_gc_free_ht() were declared in gc.h as
taking a "RHash *" argument, but then they were defined in hash.c
as taking a "RClass *"  Get these in sync.
"volatile" no longer needed here

See Matz's comment here:
  https://github.com/mruby/mruby/pull/144#issuecomment-5754054
C++ compilability -- don't jump across variable initialization

C++ is picker than C about when you can "goto" across a variable being
defined.  The fix is to just minimize the variable's scope inside an
extra set of brackets.

Without this change, g++ has the following errors:

  transcode.c:590: error: jump to label 'resume_label3'
  transcode.c:514: error:   from here
  transcode.c:582: error:   crosses initialization of 'const unsigned char* p'
  transcode.c:2124: error: jump to label 'set_encs'
  transcode.c:2184: error:   from here
  transcode.c:2088: error:   skips initialization of 'const char* err'
  transcode.c:2089: error:   skips initialization of 'size_t error_len'
  transcode.c:2090: error:   skips initialization of 'mrb_value bytes'
  transcode.c:2091: error:   skips initialization of 'mrb_value dumped'
  transcode.c:2092: error:   skips initialization of 'size_t readagain_len'
  transcode.c:2093: error:   skips initialization of 'mrb_value bytes2'
C++ compilability: don't use "node" as both a type and a member

I originally solved this by renaming the "node" type to "node_t",
but Matz didn't like that.  He suggested renaming the member
variable "nd" instead:
  https://github.com/mruby/mruby/pull/144#issuecomment-5743153
Fix wrong cast
C++ compilability - avoid 'goto' across a variable initialization

C++ is pickier about when a 'goto' can cross a variable being delcared.
The fix is to just add a set of braces to restrict the variable's scope.
Without this, g++ will fail with:

  regcomp.c:3057: error: jump to label 'set_call_attr'
  regcomp.c:3087: error:   from here
  regcomp.c:3041: error:   skips initialization of 'int gnum'
Merge pull request #167 from bovi/fix-hash-shift

Fix Hash#shift return value from Hash to Array
use mrb_assoc_new to generate a key-value pair
Merge pull request #168 from k-tsj/add-cast

Add cast to remove "cast from pointer to integer of different size" warning
Merge pull request #169 from mitchblank/cplusplus

Part 1 of C++ compilability
waring refactoring; print line number
'not (2)' should not raise warning