SI-5479 deprecate DelayedInit outside of App

DelayedInit's semantics are way too surprising.

For example, it delays initialization of fields,
so that fields on objects that extend `App`
(which `extends DelayedInit`) are not initialized
until the `main` method is called.

For more details and a proposed alternative,
see https://issues.scala-lang.org/browse/SI-4330?jql=labels%20%3D%20delayedinit%20AND%20resolution%20%3D%20unresolved.

Support for `App` will continue -- we'll special case it.

review by @gkossakowski