Support hashing recursive objects
Merge github.com:seifertd/object-hash
Add test for circular array references
Use .toJSON() instead of .toString() for Date objects

Using .toString(), different strings would have been generated for the same time,
depending on the current time zone, i.e. the following generate different hashes:

 TZ='Europe/Berlin' node -e 'console.log(require("./")(new Date("1 Jan 1970 GMT")))'
 TZ='UTC'           node -e 'console.log(require("./")(new Date("1 Jan 1970 GMT")))'