Handle and cache new directory listing format (closes #536)

For this to work properly, @skddc and I had to do quite some changes and refactorings, but we think for the better :)

The behavior of the different cache adapters were not consistent, as not all caches were using the `cached` property on directory cache nodes. We changed it so that now the `body` property always contains the actual content of the directory listing (in the new format) and the `cached` property keeps track of the list of children that are currently cached.

The revision of a cache node is now set directly by the cache adapter's `#put` and `#putDirectory` method on an incoming change by the server (instead of from `RemoteStorage.Sync`). This fixed the behavior described in #535, where on connecting the storage, all objects are requested a second time after they have already been cached.