Timeout functionality, refactoring, and test cases

new config option: socket_timeout_sec:

Currently, timeouts are logged and the program continues. The rss readers do keep track of how many consecutive failures to fetch they have had, so something could look at that later if we want to raise some kind of alert.

Tests can be run with nosetests or python setup.py test.