Switched to using Streams for Results

Rather than buffering data, using Streams enables those Implementations such as eXist which support them much lower memory usage when handling huge binary files or strings.

I have also addressed some technical debt in the code and contributed a Maven build.