Spring Modularization

ACS is now comprised of a hierarchy of spring application contexts.
Each plugin can contribute configuration files to add to an existing
module or create it's own module.

Additionally, for the mgmt server, ACS custom AOP is no longer used
and instead we use Spring AOP to manage interceptors.
Configuration to enable Spring Modularization

All of the code changes for the Spring Modularization will work in
a modularized context or a non-modularized context.  This commit
is the final commit to turn modularization on.  Revert this commit
to disable the modularization and go back to monolithic Spring
configuration.
Move ConfigurationDao and ConfigDepot to system context

Previously ConfigurationDao and ConfigDepot was in the bootstrap context
which was not needed.  Moving down to system to be more consistent with
the database upgrade checks.
Make SnapshotStrategy and DataMotionStrategy discovered and registered
=Comment the test for now to unblock everyone. Will file a bug and fix it
ConcurrentHashMap will through NPE on null key
Fix vmware code inclusion into systemvm.iso and other random nonoss->noredist
Fix DatabaseUpgradeChecker in standalone context

When running DatabaseUpgradeChecker as a standalone program _dao will not
be injected.  Still create an instance of VersionDaoImpl in constructor
and when DatabaseUpgradeChecker is ran in the mgmt server it will be
overwritten by the injected value.
New Transaction API

Introduction of a new Transaction API that is more consistent with the style
of Spring's transaction managment.  The existing Transaction class was renamed
to TransactionLegacy.  All of the non-DAO code in the management server has been
updated to use the new Transaction API.
Removed unneeded method
Random cleanup
Refactor missed classes
Add unit tests for Transaction
CLOUDSTACK-4649: addResourceDetail - added support for userVm resource. Now "hypervisortoolsversion" get stored in user_vm_details table, and being returned as a part of listVirtualMachines call ("details" parameter)

Conflicts:
	api/src/org/apache/cloudstack/api/response/UserVmResponse.java
	engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
	engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
	server/src/com/cloud/api/query/vo/UserVmJoinVO.java
	server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
CLOUDSTACK-4649: allow to update template details with addResourceDetails API

Conflicts:
	server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
Some StringBuffers replaced by StringBuilders

StringBuffers replaced by StringBuilders to avoid unnecesary synchronization overhead.

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
removed unused static field

- s_httpClientManager was not used

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
removed unused import

just an unused import, nothing extraordinary

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Test for AgentShell.parseCommand

- minor cleanups on the method body
  - java 1.5 for loop
  - paramName and paramValue to make the code more readable
  - NumbersUtil replaced by NumberUtils
- Test case for the parseCommand

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Test for AgentShell.loadProperties

- stream closed after properties load (with commons io)
- test added

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>