Submitting port_agent_client that raises exceptions and invokes user_callbacks in all the right places (hopefully).

- Added user_error_callback and recovery attempts argument to
listener thread constructor so that it can make decision to call
user_callback_error.
- made existing init_comms private, added public init_comms so that
callers to init_comms make decision whether or not to call user_callback
and or raise exception.