[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, const identifier cannot be used for `GetStorageByLabel()` and `begin()` methods because in their definition a Tizen C API taken `this` as parameter is called.
`storage_foreach_device_supported(OnStorageDeviceSupported, this);`

With `const` identifier, `this` is considered as a `const void*` type instead of a `void*`.