Fix several bugs 

This pull request includes the followings: 
1. Add injectable constructor to ObjectSerializableCodec - It should be injectable.
2. Change newCachedThreadPool to newFixedThreadPool at RemoteReceiverStage and RemoteSenderStage. - newCachedThreadPool can degrade performance if a bunch of threads are created at the same time. 
3. Fix RemoteSenderEventHandler concurrent issue 
- There is a scenario which leads to not sending messages completely.
- Let's think two threads enter into RemoteSenderEventHandler onNext() at the same time. 
- Thread 1: linkRef.get() == null is true so it enters into the if part. 
- Thread 2: linkRef.get() == null is true so it enters into the if part. 
- Thread 1: Push the value to the queue and submit the ConnectFutureTask cf
- Thread 1: Call transport.open and the transport set the link. 
- Thread 1: Call setLink(link) and set the linkRef and call consumeQueue()
- Thread 1: Consume all the values which are in the queue. 
- Thread 2: Push the value to the queue and get the link from transport.get(value.remoteAddress()) 
- Thread 2: link != null is true so it calls setLink(link) 
- Thread 2: linkRef.compareAndSet(null, link) is false so it ends.

If the above scenario happens, it doesn't send the value of thread 2. So I just adds the "else" part in order to send the remaining values.
Just adding @Inject does not make us be able to inject RemoteReceiverStage. 

NumberOfThreads should be a property of RemoteConfiguration.
We need two parameters NumReceiverThreads and NumSenderThreads in RemoteConfiguration.

Let's address injection in another pull request. For now, remove @Inject and @Parameter(StageConfiguration.NumberOfThreads.class)).

Why the Integer type? Change Integer to int.