Fix `content_tag_for` with array html option.

It would embed array as string instead of joining it like `content_tag` does:

    content_tag(:td, class: ["foo", "bar"]){}
    #=> '<td class="foo bar"></td>'

Before:

    content_tag_for(:td, item, class: ["foo", "bar"]){}
    #=> '<td class="item [&quot;foo&quot;, &quot;bar&quot;]" id="item_1"></td>'

After:

    content_tag_for(:td, item, class: ["foo", "bar"]){}
    #=> '<td class="item foo bar" id="item_1"></td>'
Merge pull request #9124 from semaperepelitsa/content_tag_for_class2

Fix content_tag_for with array :class option
factored out some of the dynamic code
moved more evald code
moving some stuff to the initializer
moving more stuff to the instance
move optimize_helper? to the helper instance
moving more stuff on to the instance
pull stuff out of the caller and hide in the instance
move conditionals to instance
use polymorphism to remove conditional
pushing specialization down to the optimized class
moving helper classes outside the private block
stop evaling a string every time
cache path parts in the instance
nodoc the helper classes, cache stuff for optimized helper
change parameter name for positional args
remove dead code