Reduce public API methods from IconHelper

Before this PR, including `bh` in an app would include more methods
than necessary for icon helpers: methods like `library_prefix_for`
that should only be accessed privately.

This PR extracts those private methods into a new Icon class
that includes all the business logic to render elements and edit
attributes (e.g., attach classes), leaving the helper cleaner.