Only output the wrapper if the block yields content

This change allows the wrappers to not output their rendered HTML when
when the block yields no content.

e.g. when defining an optional component :

  ba.wrapper tag: :div, class: 'form-helper -message -hint' do |bb|
    bb.optional :hint, wrap_with: { tag: :p }
  end

and that component is not used in a template :

  <%= form.input :name %>

Then the HTML output still contains the wrapper output :

  <div class="form-helper -message -help"></div>

If this behaviour is not desired, then the output of the empty tags can
be disabled via the `remove_empty` option.

  ba.wrapper tag: :div, class: 'form-helper -message -hint', remove_empty: true do |bb|
    bb.optional :hint, wrap_with: { tag: :p }
  end

The above config will not output any wrapper HTML.
Any truthy value is valid to enable an optional component
Merge pull request #1072 from econsultancy/no-empty-wrapper-divs

Only output the wrapper if the block yields content
Move tests to the right place and add missing case
Rename to optional to unless_blank

optional may be confusing with the optional method
Use better names to the wrapper
Document :unless_blank
Add CHANGELOG entry [ci skip]