factor out FeedBook message handling; add game id; start handling pnl and pnl marks
gateway: make inbound and outbound threads daemons so exit happens cleanly
test: update test.py to exit on blank message for easier testing
gateway: also set GatewayCollection accept thread as daemon
pnl: add pnl logging, monitoring, and computation
gui: add pnl event list (not processed yet)
gui: integrate real pnl leaderboard