In tag helper, honor html_safe on array parameters

Currently, the tag helper honors the html_safe on its parameter values, so you can do something like `tag('a', href: 'http://example.com?a&amp;b'.html_safe)`.  However, with array values (_e.g._ when supplying multiple classes) the strings are concatenated together with `Array#join` and escaped without regard to the prior `html_safe` status.  This patch resolves the inconsistent behavior, as demonstrated by several tests.  I have also included a test for the empty array, since that's an easy one to break if you do it wrong.

I can't actually see a valid use case for supplying `html_safe` string values; in my opinion people should just supply the raw string and not try to micromanage how Rails escapes strings when using these helpers.  However, as long as we are going to escape values sometimes, we should do it consistently.



Since fadbc7c, `safe_join` already avoids the intermediate allocations. It does still return an `html_safe` value, so it makes one there... but I don't think the array case is enough of a hot path to worry about that.

So, I think try this as just swapping to `safe_join` instead of `join` (if `escape`).

You don't need a new PR; just make the changes, and force-push to the same branch.