Block label helper

I've created a patch that lets the "label_tag" and "label" helpers
accept blocks. I've found that it's quite common for labels to include
markup beyond text, and things get messy quickly. Consider

    <%= f.label :terms, "<span>Accept #{link_to 'Terms', terms_path}</

" %>

versus

    <% f.label :terms do %>
      <span>Accept <%= link_to "Terms", terms_path %></span>
    <% end %>

Ticket with patch/tests:

https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/3645-let-label-helpers-accept-blocks

Stephen

Double bonus for this enhancement -thanks Stephen. I see that you
have also made the "name" attribute optional -fantastic. Now one can
implicitly apply a label to the enclosed input without having to worry
about id matching with the 'for' attribute:

label_tag nil, "Your Name" do
  text_field_tag 'name'
end

IMO, the signature of #label_tag (and #label) should evolve to better
support this practice as it reduces the need to keep DOM ids in sync
between the input and the label. Perhaps by counting args to
label_tag and assuming a single string argument is a contextual label.

Thanks for taking a look, Chris. Could others offer their opinions?

Stephen