Make closing illegal shell fatal

And remove a dead return that could never hit.
Change debug level of missing configuration data

Change from DEBUG to DEBUG2. Not that this is really frame work related
but more that it clutters the logs and doesn't add much value for "normal"
debugging.
Add command completion matching using expect_after

Use expect after to add an implicit expect block for matching the end
return code for any started command. This means the user can expect for
what ever they want and after there expect cases are tested an implicit
case will be executed, checking for command completion.

By design, the user still has to call finish to harness the return code
and remove the checksum from the expect buffer. I felt this makes more
sense when reading the code, and would flow more naturally when mixing
custom blocks, no blocks, and capture calls.
Add rudimentary scp utility

Get or send files using scp. Supports multiple files in both directions
and utilizes send/finish with expect_after to know when transfer is
complete.

Examples:

Send /tmp/foo from current machine to /opt on "lightcycle"
$ scp "to" "lightcycle" "/tmp/foo" "/opt/"

Get /tmp/foo from "lightcycle" and store in /opt
$ scp "from" "lightcycle" "/tmp/foo" "/opt/"

Send /tmp/foo and /tmp/bar from current machine to /opt on "lightcycle"
$ scp "to" "lightcycle" [list /tmp/foo /tmp/bar] "/opt/"

Get /tmp/foo and /tmp/bar from "lightcycle" and store them in /opt
$ scp "from" "lightcycle" [list "/tmp/bar" "/tmp/bar"] "/tmp/"

Get all files from /tmp/ on "lightcycle" and store in ~/tmp
$ scp "from" "lightcycle" "/tmp/*" "~/tmp/" "-r"

Send all files from /tmp/ to ~/tmp on "lightcyle"
$ scp "from" "lightcycle" "/tmp/*" "tmp/" "-r"