introduce parseString method for placeable substitution
move subPlaceable to compiler; stroe complex strings as Entity objects
same as above, but keep flat complex strings as strings and resolve them in context
Revert "same as above, but keep flat complex strings as strings and resolve them in context"

This reverts commit 1aa982dbf26de2cf841ba055cb0bbda0d50fa257.  The differences
in memory consumption were not statistically significant, and the API became
uglier.

diff vs 98b254f:   -3       3       -14        0
p-value:            0.8177  0.7386    0.4781   1.0000