Allow for installing multiple versions of same pkg

We might need to install both mocked and non-mocked versions of a
package as part of the dependency chain from a single set of tests -
so we can't just use a map using the name as key to track what we have
done.

We now use processed as the base of our tracking, which uses the label
as a key - which is different for the two cases.  This then allows us
to install both versions of the package.

fixes #9.
Type in a var statement may not be simple

For a simple var type (e.g. "var foo int"), Type will just be an
*Ident, so Fprintf will automatically call String() and all will be
fine.  However, in more complicated expressions we will just get the
literal value of the Expr printed.  We should be using exprString so
that we always get a sensible printable string.

fixes #10.