Change timeout for CLI returns

This is a fix for #15905, the intent being that if you set a timeout it will actually time out. If you pass/set a timeout of 0 it will do the checking of minions etc to determine if the job is running. This seems to be a better compromise since the user/admin can decide wether to have timeouts or not
Add CLI timeout tests to standard client tests
Add tests for timeouts to client tests. In addition this makes all of the client functions have the same functionality
Update docs
lint fix
Merge branch 'develop' of github.com:saltstack/salt into develop
Add initial FSChan object

This object will allow us to replace a channel in the file client
with a local channel that just uses the file server class
init the FS backend
Add the FSClient class to wrap the FSChan interface
Catch type error as well
Add minion config defaults for gitfs
get pathing working for the new FSCclient interface
Add fileserver defaults to minion config
It is a little slower, but there are serious overlooked

problems with the localClient interface, so I am going to replace
the default LocalClient with FSClient to make the full data
stream consistent for now
change salt-ssh to use the new fsclient to get files
Attempt to fix race condition in return

This is due to our pinging of the minions for job returns, there is a non-zero amount of time between the job showing as "not running" on the minion and showing as recieved by the master. This will only be worse on Syndics-- so I'd recommend not using a 0 timeout value unless you have a small cluser
Add master_opts to the fileserver object allowing clean pass-through
Remove old ssh functions
Split the file clients, still use local for pillar
still use reomte obj when pillar is remote