extracted copypasta for mocking out when appscalefile does exist to a common function
added code/test to make sure that users call 'appscale ssh' with an int arg
added hook to appscale executable for ssh command, and changed what exception we throw on non-int args to ssh
changed ssh to raise TypeError on bad node type
added pseudocode for rest of ssh command
fixed syntax error when multiple exceptions can be thrown
added code/test to make sure nodes.json is present when looking for the node to ssh to, and created appscale-specific exception for when this file isn't present
added doc for test case
added code/test to read the locations.json file and make sure that the node at the specified index exists before trying to log into it
added code/tests to construct and exec the ssh command
expanding ~ in json and ssh key paths, so that opening the json file and sshing works