Pass `nav` extra params to the <nav>

Before this commit, the `nav` helper ignored unknown options.
For instance the code:

```rhtml
<%= nav class: :important, id: 'my-nav', data: {value: 1} do %>
  <%= link_to 'Home', '/' %>
<% end %>
```

would simply generate the following HTML

```html
<ul role="tablist" class="important nav nav-tabs">
  <li class="active"><a href="/">Home</a></li>
</ul>
```

ignoring the `:data` and `:id` parameter.
After this commit, the result is:

```html
<ul class="important nav nav-tabs" id="my-nav" data-value="1" role="tablist">
  <li class="active"><a href="/">Home</a></li>
</ul>
```

which should partially mitigate #39.

---

This commit also reduces public API methods from NavHelper

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

This PR extracts those private methods into a new Nav class
that includes all the business logic to render elements and edit
attributes (e.g., attach classes), leaving the helper cleaner.