RF: remove circular reference in interp1d

interp1d was keeping references to self via a reference to one of its
methods, preventing it being cleared from memory without garbage
collection.
NF: garbage collection utilities

Context managers for looking at garbage collection
TST: add test for circular reference in interp1d

Use reference counting context manager
MAINT: move gcutils as a private module under scipy.lib

Also rename check_refs_for -> assert_deallocated
Merge pull request #2502 from matthew-brett/ref-counting-and-interp1d

ENH: interpolate: avoid reference cycles in interp1d