add open timeout and timeout settings to API client

warn the end-user if a source timed out during communication but continue working to allow for effective offline use

see #912