Extract horizontal and vertical helpers

Move `horizontal`, `vertical` in separate helpers

Reduce public API methods from HorizontalHelper/VerticalHelper

Before this PR, including `bh` in an app would include more methods
than necessary for horizontal and vertical: methods like `horizontal_string`
that should only be accessed privately.

This PR extracts those private methods into a new Vertical class
that includes all the business logic to render elements and edit
attributes (e.g., attach classes), leaving the helper cleaner.