Issue #9 - Optimize MD5 checksum algorithm for large files

* Use a byte buffer to update the MessageDiggest in blocks of 2048 bytes.
* Move MD5 checksum utility to FileUtil helper class.