Os-Agnostic Path Handling

I though all the slash and backslash handling all of the place was ugly. So I created OsPath to be os-agnostic, actually it simply detects the type of path.

Initially I had OsPath as storage type on RemotePathMapping but that was a bit tricky on the UI. But I left the OsPathConverter in case we want to add it transparently to the db in the future. It isn't used though.

Anyway, this PR is to get some feedback, I didn't look over it yet, so don't go all wild on code-standard stuff :)

I'm considering we should be using this anywhere were we actually use a path. Lemme know what you think.
Arguably the result of the Directory property should be with a slash.
Howerver, the point of the test is to check if we properly handle the ```LastIndexOf(...)```  in case the original has a slash. If improperly handled the property would've erroneously returned ```C:\rooted\windows\path``` instead of ```C:\rooted\windows``` or ```C:\rooted\windows\```.
I think it should return ```C:\rooted\windows\```, like AsDirectory does. Lemme know if you agree.

However, I don't agree with the file vs directory distinction. ```C:\test``` could be a file or directory, you don't know, ```C:\test\``` 'shouldn't' be a file, but it doesn't make much sense to have a FileOrDirectoryPath and a DirectoryPath class.