t/README: Add some more explanation of the test scripts.
Support environment values that are computed via getter methods.
Change "administrator" into a computed value.
Change "repo_shortname" into a computed value.
Simplify how repo_shortname is computed.
Change "projectdesc" into a computed value.
Change "emailprefix" into a computed value.
Change "sender" into a computed value.
Change "fromaddr" into a computed value.
Leave pusher as a simple username instead of appending "@emaildomain".

There is not much value to appending a constant emaildomain to pusher,
so just leave it naked.
Change "pusher" and "pusher_email" into computed values.
Change "repo_path" into a computed value.
Change "charset" into a computed value.
Remove VALUE_KEYS.

All Environment values are now computed, so remove the infrastructure
for reading values out of instance attributes.
Merge branch 'compute-env'

Remember those commits

    Replace Environment.get_*() with a "*" attribute

?  Well...those were a mistake.

The motivation for changing getter functions into attributes was to
avoid all of the boilerplate code for handling attributes, and yet
still have memoized evaluation and make it easy for users to extend
and all that stuff.  But it turned out that using attributes was more
awkward that expected, mostly because there were non-obvious ordering
dependencies.  Often one attribute was required to compute another, so
care was needed to ensure that the first attribute was set with its
final value by the time it was needed:

* Some attributes ended up being set and overwritten multiple times as
  the various constructors in the inheritance chain were executed.

* Some attributes that could only be computed by derived classes had
  to be passed to the constructors of base classes so that the latter
  could use them in the derivation of other attributes.

This problem led to at least one bug.

So instead, go back to using get_NAME() methods to handle attributes.
Object orientation and the overriding of methods is probably pretty
familiar to most users anyway, and is hopefully much easier to follow
then the old method.

To simplify things and minimize boilerplate, give up on the idea of
memoizing individual attributes at the level of the Environment
classes.  This is not so bad, because most of the attributes are used
via Environment.get_values(), which returns a dictionary with all of
the values pre-computed, and *that* function is memoized anyway.

This change clears the way for even more separation of concerns.

These changes affect the internal workings of git-multimail, but don't
change how git-multimail interacts with its surroundings...

...with one exception.  We now leave the pusher as a simple username
rather than appending @emaildomain to it.  This will slightly change
the email contents.