introduce proxy functionality and TimeProxy class

This change introduces a new abstraction for implementing functionality
related to interaction with a Server object: a proxy. A proxy is an
object that implements a subset of a Server's methods and can intercept
the requests before the server was invoked and the responses after it
finished. Proxies can be stacked in which case the stacking order
defines the order in which requests are passed to the respective proxy
instance.
Along with the basic proxy feature, the TimeProxy class is added.
TimeProxy can be used to estimate a server's time. It does so by
investigating the server's responses to certain requests which are known
to carry them time along with them. Once acquired, it relates these
times to the system's local time to calculate a delta. This delta (or
better: the average of a series of deltas gathered over time) is used to
give an estimation of the server's time based on the system's current
local time.
introduce CacheProxy class

A previous change introduced caching functionality for the Currency
class. Every history() invocation checked whether a cached response
exists that could be used to satisfy the request.
Although working, caching is better done accross all requests that
are directed to a server.
This change introduces a new CacheProxy class: a proxy that implements
our desired caching behavior. At the moment, caching happens only for
history() invocations. It is very well possible to extent it to apply to
other requests as well, although different drawbacks must be considered.
add unit test for proxy module

This change adds a test for the proxy module. This module's main
functionality is to stack various proxy instances and to invoke them in
the correct order.
The newly added test verifies that the order is as intended with respect
to the arguments supplied to the 'createProxyInstance' function.
MERGE W/ b7f969d1
MERGE W/ e3c84b19d8f1f322d368b235b64917c8383cf8e5
MERGE W/ d6971f599ad88a7210e27b3d41757a2d6e613407
replace warn() with warning()

Apparently, the warn() function from the logging module is deprecated in
favor of warning(). This change replaces all occurrences of the former
with the latter.