Add internal buffering to any unconsumed data by the decoder so that decoder does not need to repeat the boilerplate code to buffer unconsumed data. Changing the JUnit tests and examples correspondingly.

Add more locks to AsyncBackupRequestExecutor to make it run consistently across implementations.