Refactor disk cache allowing for windows support and alternative cache layouts
The reason behind this refactor was to add a better level of abstraction to allow me to experiment with different cache layouts (e.g single large files rather than many small files) for performance reasons. However I took the opportunity to lay the ground work for windows support many have talked about it the past.
Note I have no intention of adding Windows support and there are likely opportunities to have better code sharing but I believe this a good start and it made sense to consider Windows support when adding greater abstraction for my own needs.
Please review.