Tracked down memory leak - the returned ModuleInfo contained fields which were not required for crossreferencing but were kept around, so split it to a part to be retained throughout, and a part which can be discarded after processing a specific module.

Also, fields of the retained part were not forced, so they held a lot of junk from GC-ing. All in all, this fixes #11.

Bonus: fix CPP tests (were not run apparently).