Fixed #299 Improve Retry behavior

1. Retry new replication session if previous session ends with error see ReplicationInternal.java
2. Apply same retry logic in a replication session. see RemoteRequestRetry.java
Instead of these guards:

```
if(stateMachine.getState().equals(ReplicationState.RUNNING)) {
```

and

```
if(!stateMachine.getState().equals(ReplicationState.OFFLINE)){
```

I think we should just fire a new trigger to the state machine called RETRY_IF_READY.  If the state machine is in not in the RUNNING state, then it will ignore it.

Also, if the state machine is in the OFFLINE substate, then it should either call:

```
// retry later
scheduleRetryFuture();
```

or it could in fact probably just ignore it altogether, because when the [AndroidNetworkReachabilityManager](https://github.com/couchbase/couchbase-lite-android/blob/master/src/main/java/com/couchbase/lite/android/AndroidNetworkReachabilityManager.java) detects the device has come back online, then it will trigger retries.  (and in fact, when I was testing and found this bug originally, that was my workaround -- I would toggle the wifi and then it would push the local documents up)