[Download] Fix and complete Download API

Refactored Filesytem and Download API to share code
related to virtual roots.
Pass TCT tests.
Fix example.

BUG=XWALK-1070
No, only integral type constants can be initialized in the class definition. Otherwise you get:
error: in-class initialization of static data member 'const string VirtualFS::kLocationCamera' of non-literal type