Parser version 7: Disallow node-variables from referring to generated files.

Previously, a node-variable could refer to a generated file like so:

: |> ... |> a.txt
&var = a.txt

However, this becomes more difficult when referring to a generated file in another directory:

&var = ../foo/a.txt

Because we may not have parsed foo/Tupfile yet, so foo/a.txt doesn't exist. This causes the build to behave non-deterministically, which is not acceptable. We can change the node-variable lookup so that it uses input_pattern_to_nl() instead of get_tent_dt(), which would cause it to stop parsing the current Tupfile and parse foo/Tupfile first, similar to input files in :-rules. However, this then breaks t2104 due to a circular dependency among the Tupfiles. Since this test is most similar to how node-variables were intended to be used, it seems the best option is to not allow node-variables to point to generated files.
Added t4078, t4079, t4080, t4081 - files with exit failures.

Sometimes it is useful to move over the valid files that were created by a sub-process even if the sub-process fails. For example, in Latex when it outputs a log file and fails, we don't want to just leave it under .tup/tmp as a random numbered file, but rather put it into the tree in the expected location. These tests cover the various cases, such as when only some of the outputs exist, or we accidentally write a file we're not supposed to (which shouldn't be moved over).
Support Python 3 as well as 2.

Had to fix up the following:

1) print() is now only a function, but using the function in python 2 makes it print an array if you use commas
2) read_byte() returns an int in python 3, instead of a single-character string in python 2, so we have to make it a string in all cases to do the sorting
3) string.join() no longer exists, so use "".join()