Add output level "DEBUG2" for internal debug

Intended for framework / in-depth debug.
Split execute code

Split execution code into "start", "capture" and "finish". Execute works
the same but the underlying functionalities of execute can now be used
separately.

The most likely usecase for this is when the user wants to manually
interact with the command running.

For example:

start "scp foo machine:"
expect {
	"password" { send ... }
}
set return [finish]

or even

start "scp foo machine:"
expect {
	"password" { send ... }
}
set output [capture]
set return [finish]

The checksum stored in the int::shell data structure can be utilized
with -notransfer in order to get out of a custom expect loop.

set checksum [dict get $int::shell($int::active_shell) "checksum"]
expect {
	foo { }
	-notransfer -re "$checksum (\[0-9]+)\r\n" {
		# We are done
	}
	default { fail... }
}