Add additional logging for reloading package versions.
Avoid a race condition in package reloading.

Reloading an old package version could fail if the latest version of the given
package was also being reloaded at the same time.
Set package reload metadata before beginning the reload.

It turns out deferred tasks aren't strictly asynchronous, so some of the
deferred reload tasks started running before the reload count was reset. This
caused the reload to appear not to terminate.
Merge pull request #86 from dart-lang/reload

Fix package reloading