Use a lazy loading task property expansion model

Instead of preloading all possible task properties up front, create a
Loader class and only lazily load the referenced properties when they
are used. This not only reduces the amount of loading needed, it also
makes it easy to detect which properties are actually referenced by a
task and its namesFactories. Enabling the detection enables further
optimizations by potentially skipping more unneeded work. Loading
properties lazily also opens the door to exposing properties which are
more expensive to load without tasks incurring this expense unless they
use the expensive property.

Change-Id: Ib28674660630113cb2970a232f73a8aa8b37a2e1
1 file changed