Don't export "private" instances

This fixes #502. I'm not crazy about the method used here, but it seemed the most suitable place to do it in the end.

By "private" I mean the instance is for a class or type that is defined in the same module as the instance, but is not exported, so therefore the instance can't be used outside of the module anyway.
Nitpick #1 : Can we add type annotations to these? I know we don't _need_ them, but I'm trying to start adding type annotations to my own code in `where` blocks where I can, to add readability.

Nitpick #2 : Can we rename this to `isExportedClass` etc. to match the terminology used elsewhere? Another mission I have on the back-burner is to clean up some of the naming conventions used throughout the code, like `Value`/`Expr`, etc.

Other that that, this all looks good.