Improve container locking mechanism
Improve container locking mechanism

 - Removes adjustable timeout (we were using 30s everywhere)
 - Merge stop and shutdown operations
 - Allows for re-usable operations
 - Make Shutdown() re-use any existing stop operation which was
   triggered by a prior call to Shutdown()
 - Make Stop() re-use any existng stop operations which was triggered by
   a prior call to Shutdown()

This effectively still prevents Start() from kicking in before a
container is fully shutdown and it also still prevents concurrent calls
to Stop(), but it now allows for multiple calls to Shutdown() to work
(just sending the shutdown signal multiple times) and it also allows for
a forceful shutdown to work after a clean shutdown attempt.

Closes #2612

Signed-off-by: Stéphane Graber <089afc6d81f66f1168a9849e15660feae286e024@ubuntu.com>

stgraber/lxd,pcdummy/lxd,akshaykarle/lxd,chrisglass/lxd,akshaykarle/lxd,lxc/lxd,erikmack/lxd,georghopp/lxd,akshaykarle/lxd,stgraber/lxd,jsavikko/lxd,Skarlso/lxd,lxc/lxd,atxwebs/lxd,hallyn/lxd,chrisglass/lxd,erikmack/lxd,hallyn/lxd,lxc/lxd,jsavikko/lxd,Skarlso/lxd,Skarlso/lxd,georghopp/lxd,lxc/lxd,pcdummy/lxd,hallyn/lxd,pcdummy/lxd,Skarlso/lxd,atxwebs/lxd,lxc/lxd,erikmack/lxd,stgraber/lxd,mjeanson/lxd,chrisglass/lxd,lxc/lxd,atxwebs/lxd,atxwebs/lxd,hallyn/lxd,hallyn/lxd,lxc/lxd,stgraber/lxd,techtonik/lxd,techtonik/lxd,hallyn/lxd,mjeanson/lxd,stgraber/lxd,mjeanson/lxd,georghopp/lxd,techtonik/lxd,stgraber/lxd,jsavikko/lxd,stgraber/lxd