More enhancements to java SSLEngineManager

* Blocking behavior in the read() method was leading to high CPU
  usage.
* GC wasn't purging temporary byte arrays used to transfer data
  between I/O streams and NIO byte buffers, causing excessive
  memory usage.
* Some optimization of read() behavior to reduce the frequency
  of blocking operations.