refactor read callback to separate functions per type

there are now separate functions for special files, clustersize==1, and clustersize >1
also moved the readMutex into the cluster array so each cluster has its own