Added configuration rewrite functionality.  This allows you to use {..}
notation in configuration files and have the values replaced by context
items.  Ex:  {HOME} would be replaced with ctx['HOME'].  Fixed some
issues with different test cases which were checking the number of files
present.
Switched rewrite to run during the done call.  Needed to happen so that files have been copied into the build dir first.
Changed the way that substitution is performed on a rewrite.  This is
because using the default string.format(..) method will throw an error
when it encounters a key that is not in the context.  Because we're
rewriting configuration files that could have values which should not
be substituted, string.format(..) can cause unexpected errors.  Using
string.Template instead will allow for safe_substitution to change what
can be changed and leave the rest intact.
Changed rewrite to use different delimiters.  Uses '#' for compile time rewrites and '@' for runtime rewrites.  This allows you to rewrite certain values during staging and certain values found only in the runtime environment.
Already reading config file into memory, process the whole thing at once instead of line by line.