Multiple enhancements to gridfs

This commit contains many enhancements to gridfs, particularly:
1. Support for random writing
2. Buffering for better performance (read and write)
3. Support for pre and post processing of chunks, allows for easy plugin of compression and/or encryption
4. Ability to disable md5 calculation
5. Overall refactoring for clarity
6. Small modification on how to use gridfile_writer_init. The user before using this method must use to properly initialize the structure.