Added t4149 - make sure generated dirs are created with ^o.

Currently generated dirs are created by way of the tup_entry_open() in unlink_outputs(). There is probably a better way to do that, but for now just do tup_entry_open() in move_outputs as well.
Added t5078 - make sure ^o^ won't skip commands if we're removed from a group.

When a command is removed from a group, we need to run dependent commands to check for proper dependencies even if the command's outputs are the same.
Added t5079 - make sure groups are modified with ^o^ if outputs change.

Here we remove an output from a group, so we need to make sure that the group is marked as modify so that dependent commands are executed even if the remaining outputs are unchanged.
Added t5080 - make sure transitive deps aren't broken by ^o^.

In this case, we have a normal link on a file because of a transitive dependency. When that transitive dep is broken and our output is the same, we still need to run the dependent command so that its dependencies can be checked.
Helgrind doesn't seem to like bitfields.
fuse: Use fuse_main() instead of fuse_mount/fuse_new to work with gold.

The gold linker is broken and picks the wrong version of the fuse_new() function, so the wrong argument parsing is used and results in the error:

fuse: unknown option `'
fuse_new: Operation not permitted

By calling fuse_main() directly we can avoid this issue. Of course this means we are now desynchronized wrt setting up the file-system and trying to use it. This was already a problem on OSX and FreeBSD anyway, so it will be better to have a single approach that works for all. I suspect the init() function usage will also only work on Linux, but we can add a sleep/try to access a dummy file in the file-system polling loop if necessary.
osx: Fix mount race condition and master_fork wait().

For some reason, the init() callback isn't sufficient for determining when the fs is fully ready to go, so the chdir() into the virtual fs fails unless we wait for it to be fully initialized. We do this by polling for the @tup@ virtual directory.

Also, OSXFUSE is setting signal(SIGCHLD, SIGIGN), which causes the waitpid() on the master_fork to fail. We set this back to SIGDFL so that works properly.
Add Tupfile.ini support.

This commit seeks to obviate the explicit calling of `tup init`. When tup
is run, it will now search for both a `.tup` directory or `Tupfile.ini`
configuration files on the path down to the root directory. If no `.tup`
directory is found, tup will consider the directory closest to the root
that had a `Tupfile.ini` file as the root of the project and automatically
call `tup init` in that directory.

Any `Tupfile.ini` encountered along the way to the root is parsed as a
configuration file (such as the `.tup/options` or `/etc/tup/options`
files). The ini files are added to the configuration search in the order
they are found, that is a `Tupfile.ini` in the directory `tup` is run from
has the highest precedence. Note: This has the interesting property that
things in `Tupfile.ini` files are explicitly not project-global unless they
are in the root directory of the project.

The contents of `Tupfile.ini` files are not tracked in tup's database,
rather they are re-parsed on every invocation of tup. This is a design
choice, as the configuration elements in the ini files are designed to
affect the behavoir of tup as a program, not tup as a build system. In a
correct system, the options exposed by the ini files should not be able to
affect net result of a build.

This is tested on Linux and OS X, but not on Windows. So long as `getcwd` and
`chdir("..")` do reasonable things, however, it should work without issue.
Remove `tup upd` command in favor of simply `tup`

This commit deprecates the command `tup upd` in favor of the simpler,
shorter command `tup`. Now that `tup init` is not required, there was only
one "basic" tup command remaining: upd. This allows for much easier
migration to tup for refugees from other "build systems", using tup is now
as simple as just typing 'tup'.

The command `tup upd` is preserved for legacy / backwards-compatability
reasons, but will print a notice informing users that 'upd' is no longer
required.