create a Properties.RecursiveExpander

Abstract out recursive property expansion into a generic, single
purpose, no policy, class to make the intent clearer. Simplify the
iteration approach now that it is easier to see how to do it safely.
This change makes the Properties class all policy, while all generic
expansion pieces are now implemented by inner classes.

Change-Id: I428a2e355002dcd3a0d848850f27f0261060a30b
1 file changed