Implements a better diff() API and adds visualDiff()