Added a config to enable checking whether a db transaction is wrapped around communications with the agent.  If it is, an exception is thrown.  This assert has actually been there because it is part of CloudStack's design principle to not use db transactions as a way to enforce atomicity in executing things on hardware resources.  However, the assert has been ignored since the move to maven which is not good with enabling asserts.  Since then, there's been a lot of commands added that actually runs within db transaction.  This is a big no no as the problem is that the remote operation may take a long time and the db can actually close the connection, causing a rollback of the transaction.  We should not depend on transactions to enforce the atomicity anyways.