Implement Hexp::Builder

This patch introduces builder syntax, as seen in Hpricot, Builder, and Nokogiri.
A very Ruby-ish way of specifying XML/HTML trees. For basic usage Hexp::Builder
is compatible with all of the above, example usage:

```ruby
Hexp.build do
  div do
    p "Hello, World"
    ul class: 'fancy-list' do
      li "first item"
      li "second item"
    end
  end
end
```

For anything more advanced builder implementations vary, see
https://github.com/plexus/builder_spec for a comparison. Hexp::Builder
implements `tag!` as a way of specifying tags dynamically, or to prevent
name clashes. The `<<` operator used in other implementations to add HTML
strings to the output only expects objects that implement `to_hexp` in our
case. This is to stay true to the Hexp 'Snakes and Apples' philosophy. Adding
a string will cause an exception.

This commit also updates a number of dependencies, and improves test and YARD
coverage.