introduce Price class

Before this change we had the problem that prices were displayed with as
many post decimal positions as they have or as the currently set
precision allows for. This leads to confusingly large values being
printed.
This change introduces the Price class. Objects of this class have an
associated 'pip' value that quantifies the number of relevant post
decimal positions to print. Prices use Decimal internally so as to not
loose any precision.
They support the basic arithmetic operations +, -, *, and / and interact
well with Decimal objects. Prices are usually used in conjunction with
currencies, in other cases usage of Decimal objects might be favorable.
MERGE W/ e5396831
MERGE W/ 734ed21f
MERGE W/ ac0f0282
propagate timeout value to use in watchdog from fxBot.py
add unit test for automated testing of Program class
have exceptions in child threads tear down program

When one of the used threads (worker, watchdog, rate streamer, or event
streamer) raises an uncaught exception the thread itself is terminated
but the program keeps running. This behavior is not desired: an uncaught
exception in one of the threads should terminate the application after
printing some information.
This change implements the desired behavior. A newly introduced
decorator ('tryRun') is used to guard all functions running in separate
threads. Once it catches an exception, a trace back is printed and
SIGTERM send to the main thread, which will then terminate the
application gracefully.
terminate application if streams encounter an error

One scenario where the streams
fix destroy() problem in Watchdog when start() was not invoked

This change fixes a the problem that the unregister() method of the Poll
object is invoked even if no register() call has been made before. This
case can occur if the destroy() of the watchdog object is invoked on a
newly created object without having executed start().
MERGE W/ 637091325c5ff1dbd9f3d0c55932f773927026b6
MERGE W/ ac0f0282
MERGE W/ 45a1f888
add complete infrastructure test

This change adds a unit test that verifies the basic infrastructure for
pushing events from the various sources (rate and event streamer
threads, and watchdog) works as intended.
Focus is on execising all main paths so as to catch potential type
errors and the like. Correct evaluation of the events has to be verified
by a unit test for each component.