merge revision(s) r45553,r45554,r45557,r45558,r45561,r45566,r45567: [Backport #9718]

	* array.c (rb_ary_modify): remember shared array owner if a shared
	  array owner is promoted and a shared array is not promoted.
	  Now, shared array is WB-unprotected so that shared arrays are not
	  promoted.  All objects referred from shared array should be marked
	  correctly.
	  [ruby-core:61919] [ruby-trunk - Bug #9718]

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

	* test/ruby/test_array.rb: remove useless `assert'.


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