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` 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.

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
Don't display usage information if 'tup foo' fails to build 'foo'.

The usage now only needs to be shown if we don't have a Tupfile.ini or .tup directory anywhere up the tree.
Move init_command to init.c