pkgIndex: move package require to usage files

TCL advises against putting require statements in the index file.

    http://wiki.tcl.tk/5900

Errors like these can otherwise happen:

error reading package index file pkgIndex.tcl: too many nested
evaluations (infinite loop?)
pkgIndex: remove reference to none existing file expect.tcl
Merge pull request #14 from neg/pkgindex

Pkgindex
require expect in setup.tcl

This should have been done in 6a75f81.
shell: always set active_shell

Alias of the active shell needs to be stored in int::active_shell
disregarding of if it is a new shell or we are switching back to a
existing one.
shell: verify you have a shell before you can push it

There is no point in trying to push a shell if you do not have one.
shell: add unittests for shell_{push,pop}

Very basic tests to verify expected behavior.
shell: add unittests to test int::active_shell

Check that the internal variable int::active_shell is updated correctly
when spawing, switching and closing shells.