emit thread, config file, unit tests

The changes should have no effect on the people who are currently using this, if they do not change anything in their code. 

I added the followings:

- an auto-emit feature, disabled by default. the way to use this is through one of the added constructors, e.g.:
Client(String programId, boolean autoStatEmit, boolean clearStatAfterEmit, int statEmitInterval). 
the old constructor where we only pass the programId will have this feature disabled. 

- config file to read mondemand addresses/port from. e.g.:
client.addTransportsFromDefaultConfigFile() or client.addTransportsFromConfigFile(config_file)

- a timer stat where we could specify extra attributes to be emitted for it. e.g.:
client.incrementTimer("key", some_value, TimerStatTrackType.MIN | TimerStatTrackType.MAX | TimerStatTrackType.MIN.PCTL_98 
this will emit min,max and 98 percentile of the values added to the counter since the last emission of the counter. 

I also added unit tests for the added/modified codes. 
what is the point of catching and rethrowing here?