Add start() to VirtualDataStore to express children's interface.

Also stop() is changed to virtual.
Remove an unused pure virtual function VirtualDataStore::getTriggerList().

We'll revive it when it's actually required.
Add stub functions "update()" to VirtualDataStore*.

We may subdivide these functions later to update each items indivisually.
Remove unused functions in VirtualDataStoreZabbix.

* getTriggerList()
* getEventList()

Now I think it's dangerous to remain these functions because they
return not only Zabbix's data but also Nagios's data.
When we revive them, we should pick up only Zabbix's data.
Add DataStore::update() and implement VirtualDataStore::update().

Next, I'll propagate it to DataStore's children -> ArmFoobar
Remvoe update() from VirtualDataStore{Zabbix,Nagios}

They will not used in the near future because they don't have data
except DataStore and DataStore's update() are called from their parent
class "VirtualDataStore".
Add update() to DataStore{Zabbix,Nagios}
Add a stub function ArmBase::forceUpdate()
Add ArmBaseVector
Add collectArms() to DataStore and VirtualDataStore
Add simple callback mechanism.

If we need more features, we should use boost or libsigc++ or something.
Wake all sleeping ArmBase threads immediately on client request
Add a config item to enable/disable on-demand copy
Use DBClientConfig::isCopyOnDemandEnabled()
Fix testDBClientConfig::test_createTableSystem().

Support newly added config item "enable_copy_on_demand".
Update replicated data also on requesting triggers & items.

Sorry, I forgot to add it at b31ba0e.
Limit max number of running Arms
Limit minimum interval of force update
Delete closures automatically by Signal object
Add missing read locks