osx: Up fd limits even though rlim.rlim_max is -1.

For some reason, OSX reports the max number of open fds as -1, even though we can increase them from the current limit. Upgrade the default (256) since it is easy to run out when running things in parallel.
Added t4155 - make sure ^o works in a subdir.

This was broken on OSX since it tup was in a subdirectory when it tried to rename the old outputs.
win32: Ignore paths that start with '\\'

Some programs apparently try to write to \\WMIDataDevice
win32: Ignore writing to the temp directory.

Some programs may write things to the temp directory that aren't tracked and aren't removed when the program completes. Tup should just ignore these.
Added t3081 - new circular group test.

Now that commands can have normal links from groups, we always need to do the group check when removing a sticky link.
Added t3082 - make sure environment links persist when removing a group.
Don't read all normal links while parsing.

Since we only need to check if a sticky link is also a normal link when the link is being removed, it's silly to always load all of the normal links during parse time. For directories that have commands with lots of inputs, doing so can really slow down parsing.
Add lua documentation from Rendaw.
Ignore unknown options instead of erroring out

It's hard to share configuration if tup errors out when it encounters
and unknown option. Change this to print a warning instead.
Added t2169, t2170 - filenames with '{' should work.
Replace xxd usage with xxd.lua

Since we have lua sources, we can use the internal lua executable to run xxd.lua and avoid the dependency on vim-common for the real xxd executable.
Add Tupfile.ini support. Obselete `tup init`

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.

To appease the idiom of `tup init && tup upd`, repeated calls to init
will print a warning indicating that tup has already been init'd, but
will still return success.
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. It is silently accepted.
Update `test/tup.sh` to accommodate init, upd

None of the tests failed (on OS X at least), but these changes eliminate
the large numbers of warnings that printed.

Test t0001 is updated to create a Tupfile.ini in the custom init
directory that it creates.

Test t7052 is updated to expect the monitor to run twice, as it detects
the call to `touch Tupfile.ini` from the test framework.
Add post_init.varaints hook for default variants

This commit adds support for default variants. It adds an option entry
called post_init.variants that takes a list of variants to be run. The
hook is called any time that `init_command()` is run, whether implicitly
or by an explicit tup init.

The init() process is re-arranged slightly so that tup is fully init'd
when the post_init hooks run. For similar reasons, find_tup_dir is
converted to a singleton.