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.
Stop ClosableLazy throwing NPE when close called before get

Fixes #3024.
Filter MiMa binary incompatibilities caused by ClosableLazy changes
Merge pull request #3035 from richdougherty/closable-lazy-deadlock-2.3.x

Simplify ClosableLazy and prevent deadlock