merge revision(s) 43942,43957,43975: [Backport #9187]

	* hash.c (rb_hash_rehash): fix to free new st_table when exception
	  is raised in do_hash(). [Bug #9187]

	* hash.c (rb_hash_rehash): make temporary st_table under the control
	  of GC. [Bug #9187]

	* test/ruby/test_hash.rb: add a test for above.

	* array.c (rb_hash_rehash): use hash_alloc() instead of rb_hash_new().
	  [Bug #9187]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@44938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e