# Functions
CheckConfigName returns an error if configName is invalid.
JoinRootPath joins filePath onto remote
If the remote has a leading "//" this is preserved to allow Windows network paths to be used as remotes.
MakeConfigName makes an input into something legal to be used as a config name.
Parse deconstructs a path into a Parsed structure
If the path is a local path then parsed.Name will be returned as "".
Split splits a remote into a parent and a leaf
if it returns leaf as an empty string then remote is a directory
if it returns parent as an empty string then that means the current directory
The returned values have the property that parent + leaf == remote (except under Windows where \ will be translated into /).
SplitFs splits a remote a remoteName and an remotePath.