Correctly handle modified objects with caching

Remove the implicit update() in __del__ (unreliable, not supported)
Update the object._time_cached timestamp when updating to server
When checking cache for expired objects remove modified as well
Use temporary cache file for running the test suite
New method Cache.update() for group updates

The method updates all modified objects in the cache.  It uses
MultiCall to perform the update which can significantly speed
up things when compared to updating each object separately.
Move server communication debugging to lower level

To reduce the noise when debugging, all debug messages containing
data communicated to/from the server are now logged in level 3,
that is accessible using DEBUG=3 (which prints everything).