Several unrelated commits

I don't expect that you will be interested in all of these, but I'll submit them to see what you think.

The ArrayBlockingQueue for MD5 doesn't timeout after 1s like the original code. The existing code didn't seem to have any problems, but profiling showed that getMD5Of was a bottleneck, but I didn't have fine-grained information about what the exact bottleneck was. I was hoping using java.util.concurrent packages would speed it up, but it doesn't appear to have made a difference. I do feel that the ArrayBlockingQueue improves clarity.