varDump update

This adds support for dumping Error objects via varDump. Mostly useful for Scaffold, if you want to dump an error (patch coming).

It also prevents XPCOM objects, like nsIDOMDocument for instance, from getting dumped, which is generally good. I was thinking that we could add a hidden flag for debugging purposes. I don't recall ever wanting to dump XPCOM objects though. Otherwise, I guess we could just convert them to string implicitly.

Lastly, this refactors the code into something more comprehensible.
> I added function contents in, but only when dumping functions directly, not if they're part of other objects.

Not sure why you're bothering with this? I'd like to keep the function contents in all contexts.