Make node provisioning strategy plugable
Clarify the lock semantics
Narrow the scope of lock required to get the pending nodes.

- Too many things have incorrect locking assumptions on calling NodeProvisioner#getPendingLaunches()
- Simpler to narrow the lock requirements as that should prevent deadlocks
- We now only need the lock for a very short window and the lock is only on the list of pending launches.
typos
Fix syntax in Javadoc comment
Tidy up javadoc some more
Merge pull request #1433 from stephenc/master

Refactor NodeProvisioner to allow for extension of strategies