Refactors bindings for consistency

Bindings sometimes need more information about the attribute than just
the attribute value (such as in wildcard bindings). Also it is more
obvious even if a bit more verbose what a binding is doing when passing
in the attribute info rather than a string called `expr`. Even though
the wildcards are really the only bindings that need the data, we want
it to be consistent, so we’re passing in the attribute data to each
binding. We also created on-* and attr-* to handle all events and
attributes while still allowing them to be specifically overridden.