Simplify ClosableLazy

* Fix the type annotation so that null is a subtype of T
* Use a closure to handle closing rather than a special member type
Prevent ClosableLazy deadlock when get is called during close

Fixes #2986.
Merge pull request #2993 from richdougherty/closable-lazy-deadlock

Simplify ClosableLazy and prevent deadlock