Support custom validators [abide]

### Abide custom validators
This pull request adds the ability for developers to define their own custom validators for abide, as well redefines the `equalTo`

See changes to docs for more information.

### Note about jquery's `.data()` function
One note here is I discovered a jquery bug with `data`.  Try this in your browser's console:

```javascript
div = $("div:first");
div.attr("data-foo", "bar");
// here you notice the attribute data-foo="bar" added to the div
div.data("foo");
// sweet it was "bar"
div.data("foo", "baz");
// hmmm now you notice the attribute data-foo value did not change from "bar"
div.data("foo"); // => "baz"
div.attr("data-foo"); // => "bar"
div.removeAttr("data-foo"); // cool that attr is removed from the element
div.data("foo"); // => "baz"
// wat?
```

What this means is that when we add `data-invalid` attributes to the invalid elements, as far as jquery data is concerned, they're never removed.  This is fine if you're selecting elements like `$("[data-invalid]")` but could cause problems for developers working with `.data()` jquery function.