Add redundant equals() checks for debugging:
- The whole class DebugFCPClient is only being run for debug purposes so its OK to have those.
Bloat up class FCPClientReferenceImplementation:
- The one remaining FIXME was to make sure that we don't get onReply() calls AFTER shutdown via stop() happened. We did receive such messages because stop() called WOT FCP "Unsubscribe" which yields "Unsubscribed" messages to onReply(). This commit prevents  this - it gives such messages 3 seconds to arrive.
- To allow stop() to wait for the messages to arrive, it needs to release the main lock on the FCPClientReferenceImplementation object because the message-handler needs to take the lock. So we need a wait()/notify() mechanism. 
- To allow the "Unsubscribed" handler to determine whether it needs to notifyAll(), it needs to know whether a shutdown is pending. So we need to introduce a member variable which indicates pending shutdown.
- Because we needed a member variable which indicates whether shutdown is pending, I decided that the proper solution was to introduce a "ClientState" enum which lists all states of the client (NotStarted,Started,etc.). This allows all public functions to check whether calling them is allowed. They throw IllegalStateException if its not allowed. This will make the class more robust against misuse.