Implement json equality operators

This PR implements the equality operators for the json type and updates the current ``equalTo()`` implementation to use the Jackson library instead of just checking the equality of the backing slices. The reason is that the equality implementation of the Jackson library seems to be closer (not sure whether it implements the spec completely) to the IETF spec (see http://tools.ietf.org/html/draft-zyp-json-schema-04#section-3.6) than just checking the equality of the backing slices. For example, the below test fails with the current implementation while it is OK according to the spec && the new implementation:
```
assertFunction("CAST('{\"a\":1, \"b\":2}' AS JSON) = CAST('{\"b\":2, \"a\":1}' AS JSON)", true);
```

I guess with this PR #1857 is now addressed.
I'll fix this for you while I merge it, but just to note, you don't need to use the `BlockBuilder`s here. Because you know that the stack encoding of JsonType has the keys in sorted order, you can just use `left.equals(right)`

The reason you need them in other places (when dealing with arrays and maps) is that the stack encoding of an array is json containing the stack encodings of its element type. In json though, it's just a json string, so comparing the Slices directly is safe