Reduce public API methods from ButtonHelper

Before this PR, including `bh` in an app would include more methods
than necessary for buttons: methods like `button_string` or
`btn_class`, that should only be accessed privately.

This PR extracts those private methods into a new Button class
that includes all the business logic to render elements and edit
attributes (e.g., attach classes), leaving the helper cleaner.
Reduce duplication when testing button
Merge pull request #45 from claudiob/reduce-button-overhead

Reduce button overhead