clear the `Function0` reference of Need

inspired by sbt `SafeLazy`
https://github.com/sbt/sbt/blob/v0.12.4/compile/api/SafeLazy.scala
add Need test