core: keep track of the number of JOB_RUNNING jobs
core: add manager_status_printf()

unit_status_printf() checks the state of the manager, not of the unit
as such. Move it to manager.c and rename it to manager_status_printf().

Temporarily keep unit_status_printf as a wrapper macro.
core/manager: make a couple of functions static

They're not used outside manager.c anymore.
core: redefine unit_status_printf()

Take advantage of the fact that almost all callers want to pass unit
description as the last parameter. Those who don't can use the more
flexible manager_status_printf().
core/transaction: replace a bare status_printf()

Like other status messages, this one too should not be printed
unconditionally, but it should take the manager state into account.
unit_status_printf() does that.
util, core: add support for ephemeral status lines

Ephemeral status lines do not end with a newline and they expect to be
overwritten by the next printed status line.
core/unit: use a temp variable for manager pointer in unit_notify()
util: split resolving of /dev/console into a new function
core/execute: add internal is_terminal_output()

Similar to already existing is_terminal_input().

Note that the only current user (connect_logger_as) is never called
for EXEC_OUTPUT_TTY, so it won't mind whether we accept it.
core/execute: determine if ExecContext may fiddle with /dev/console

There is some guesswork, but it should work satisfactorily for the
purpose of knowing when to suppress printing of status messages.
core: count active units that may mind our printing to /dev/console
core/manager: print status messages about running jobs

Sometimes the boot gets stuck until a timeout hits. The usual timeouts
are on the order of minutes, so users may lose patience.

Print animated status messages telling the names of units with running
jobs to make it easy to see what systemd is waiting for.

The animation looks cooler with a shorter interval, but 1 s is OK and
should not be too hard on slow serial console users.