Changes on FileController

Uses the best cache directory based on sdk version and availability of
an external storage device (sd card).