Hash Error objects according to their string representation

Instances of Error and subclasses have "Error" as their
native class name and therefore need to be handled separately.
Add minimal handling for known Node.js native types

Node.js provides a variety of internal types with their own
class names (e.g. `TCP` or `HTTPParser`) which can not produce
meaningful hash values. Staying in line with the existing handling
of DOMWindow instances, this handles them by hashing a simple
description of the type.