Protect the vms list with a mutex

* This is rather heavy weight but it is needed
  if we want the ability to remove vms.
* _nextVMIdentifier needs not be atomic anymore
  since it is also protected by the mutex.
add {VM.monitor OtherVMIdent}
Reorder statements in BoostVM::terminate()
Move the unregistration of the io_service to BoostVM::terminate()
Make the load of _aliveVMs synchronized with the decrementation

* To avoid any possible race condition
Move BoostVM::addMonitor() to the "Termination" section