refactor($core): extracts the tag related methods in their own file
feat(hash): adds the each_key and each_pair method on Hash
feat($core): adds media and creation conditions on widgets

The `if` and `unless` options can be passed to the `widgets`
function to set conditions on the widgets creation.
The `media` option can be used to set a condition on
widgets activations based on the widow size. The `min` and
`max` shortcuts can be used to automatically creates a
condition similar to the `@media` query in CSS.
chore(widgets): returns null in the `output` widget block