introduce Server abstraction

This change introduces a new abstraction to the program: a Server object
is used for interacting with the OANDA servers. That is, it abstracts
away from the direct usage of the API class provided by the oandapy
module.
The two streamer classes rateStreamer and eventStreamer are unaffected
by this currently but they are already a form of abstraction over direct
usage of the corresponding oandapy Streamer class.
MERGE W/ 121595f2d5aee211f91fb32451df91c43296409d
MERGE W/ 42da1d38164b8555f68010583016cad616b9ff15
MERGE W/ 121595f2d5aee211f91fb32451df91c43296409d
MERGE W/ 921db89c94247027b87602f43e6b1b5b1c3826f0
add unit test for Currency class

Having introduced the abstraction of a Server class, we are now able to
create custom Server objects. One opportunity opened by this feature is
creation of mock objects to fake expected behavior or virtualize
interfaces.
This change introduces a unit test for the Currency class and its
caching functionality. A MockServer object is used to simulate the
Server interface to Currency objects while not actually performing any
network traffic but just working on local data.