Store Properties object instead of Map in TaskTree.Node

Pass around a Properties object to make variables named 'properties'
less confusing than Maps named properties, and also enable better type
checking. This additionally paves the way for storing and passing around
more information besides just the Map. To pass around the correct
Properties types, split the Properties class into two classes, one for
Tasks, and one for NamesFactories. Enable accessing the valueByName map
for descendants and NamesFactories by extending the Expander class now
that the main types can do this (the Properties class could not extend
an inner class of itself).

Change-Id: Ia3eee75b2ae0e5a16c8918c662c85c8a3cb2824d
2 files changed