Full data support

Adding support to `data()` just like in jQuery. Wrote a new formatter, new parser and elements now have `data` property.
I've added tests as well, and they're all passing. Unless the ones who wasn't passing already (at least, from the version I've forked).

@mcwhittemore already made a PR on the same thing, as you can see on the issue #215 but I've used a different approach.