Allow for deep paths

The build-a-thon may be over, but this still has the potential to replace our existing image farm.

* Allow for paths of any depth (within reason)
* Separate media (originals) and cache folders (flat and resized). Will all system to handle existing files and files uploaded through some other means
* Minimized use of synchronous fs calls (more to be done)
* Increment filename if duplicate