Since a source/schema combos no longer leak, it is safe to store strong-refs to sources directly in Row/ResultSet objects. Reduce ResultSourceHandle to a simple Source "meta-layer" to facilitate serialization of ResultSources. In the process improve behavior/error messages of objects which were deserialized without $schema re-attachment
When a source instance is registered with a schema instance, the code in Schema::_register_source() adds a strong ref of the source to the schema register, and a weak schema ref to the source itself. Install DESTROY handlers both on Schema and ResultSource to flip this setup any time the Schema instance goes out of scope (if we somehow increment the refcount of $self in a DESTROY, then the garbage collection is aborted). Tested all the way back to 5.8.1 with excellent results. Promote the source links in both ResultSet and Row to real ResultSource instance refs, as there's no longer any issue with memory leaks (before a source handle would be instantiated lazily to sidestep the source object entirely by keeping a schema ref instead). Add freeze/thaw hooks for proper serialization of Source-containing structures (be it Row's or ResultSet's). In another round of cleanup ResultSourceHandle will be reduced to purely a "no schema yet" placeholder after schema-less a freeze/thaw cycle.
Remove unnecessary "find" while populating has_many, and reduce the overall amount of method calls
these are ignored if they're empty which makes them much more compatible with HashRefInflator data sets
(based on d5e5fb4)
Both were pulled in by SQLA but still :)