Use last path component of a URI in the staged path.
Better auto project ID handling. Ref #776.

* Consolidate project ID validation and normalization into Project methods
* Provide an earlier and more detailed error message when the directory
  name can't be used for the project ID
Experimental task progress interface.  Fixes #592.

Set sbt.task.timings=true to print timings for tasks.
This sample progress handler shows how to get names for tasks and
deal with flatMapped tasks.  There are still some tasks that make
it through as anonymous, which needs to be investigated.

A setting to provide a custom handler should come in a subsequent commit.
Make ExecuteProgress listener configurable via executeProgress setting.

Experimental, so everything is private[sbt].
scripted test fixes
handle undefined target directory in unique target check