Added t2171 - tup.run() from lua.

Sometimes it may still be useful to run external scripts, even from lua Tupfiles.
Added t2172 - tup.getrelativedir().

This helps figure out where you are relative to some root directory, which would usually be defined in a Tuprules.lua file somewhere up the tree.
Make 'len' argument optional in get_relative_dir()
Print indication when waiting for another tup instance

If another instance of tup is running somewhere (e.g. an autoupdating
monitor), running a second instance of tup will wait silently until the
first process finishes. This can be confusing and make users think that
tup has hung for some reason.

This commit adds a tup_try_flock method that allows tup to print a
message indicating why it's waiting.

The windows code is untested (don't have a box to test), but if my
reading for the MSDN docs is correct, it should work. It's not a very
complicated bit of code.
Fix Windows lock indication.

Apparently if the shared lock file was already locked, the open() from another tup process would fail with a "Bad pipe". Instead it seems we need to use the CreateFile() interface so that we can do the tup_try_flock() call. This required changed the tup_flock interface to use a tup_lock_t type so that it can be an int for POSIX and a HANDLE for Windows.

Also added flushing to the Windows printf wrapper so messages actually show up when they are printed.
win32: Check both 'foo/bar' and 'foo\bar' in node_exists().

This helps test code where we are checking for command strings and filenames, since they may vary with '/' and '\' depending on their origin.