Added t3072 - remove a group after it's been used in %r.

When using a group as an input with %r, we get a normal link from the group to the command. However, the group ghost check was only checking normal links to the group, so when the group was removed, the normal link would still be present and cause tup to report an error since the node no longer existed.
Added t3073 - use %<group> instead of %r so we can single out the group we want.

This is especially useful since sticky links are forwarded - we may get unexpected groups as sticky links to our command. If we expand all the groups, we potentially get more files than are wanted.
Added t3074 - removing a file from a group should update things that use the group.
Added t3075 - remove a file from a group by changing an existing commands' outputs.
Update t3073 - make sure we get a dependency only on the group we use.
Added t3076 - <groups> used in commands need to be sticky inputs.
Added t3077 - allow multiple %<group> substitutions.
Added t4120 - convert a normal dir to a generated dir.

This should happen automatically if the only files left in the directory are generated from other directories.
Added t4121, t4122, t4123 - convert normal->generated dir

If we remove a normal file, and all that's left are generated files from other directories, we should become a generated dir. Since this happens really in tup_del_id_type(), but we don't know the parsing results until after parsing happens, we need to essentially have a followup of every parsed Tupfile to check if it should become a generated dir.

We also need to have the conversion rule be: our dir has no normal files/directories, and we have either a generated subdir or a generated file from another directory.
Small optimization - for double queries, exit prematurely if we can.
Update t4123 - add gitignore checks.