Use CURL in IDirectory et. al.

This moves to using CURL in IDirectory, to match the usage in IFile.  Plus, in most cases the first thing the directory classes did was wrap to a CURL anyway.

This is a first step to work towards passing CURL around rather than strings for paths.

It should be faster for all filesystems with the exception of the local FS which may be slower (though likely not that much) due to the IsAllowed() change.

A couple of points to mention:
1. I've made the CURL constructor from string explicit, mostly to pick up cases we are relying on the implicit construction.  Turns out there's not that many.
2. Some places involved more refactoring than others.  Fairly confident, though it could do with a good read-through to check I didn't mess up.
3. I made no attempt to optimise things, so some of the wrappers to support CURL are just doing CURL.Get() and passing on.  Where practical I made the CURL implementation the default, and wrapped with a string implementation.
4. The Get/SetURL() to CFileItem are wrappers at this point, though the goal would be that CFileItem would hold a CURL rather than string.

@Karlson2k might be good for review.  Anyone else (@elupus, @arnova ?) for general direction.  Once this one is in I'll open a discussion on how we might move further.