allow sending of arbitrary commands

Currently, only commands which have been explicitly supported (by being included in the ```COMMANDS[...]``` array) can be called via ```Ftp.raw```.

This PR extends the ```Ftp.raw``` object to allow arbitrary commands to be sent.

Instead of initializing ```Ftp.raw``` as an empty object, we initialize it as function, leveraging JavaScript's consideration of functions as first-class objects. We are still able to set and call member methods/properties as before, but we can also now invoke ```Ftp.raw``` directly. Internally, both ```Ftp.raw(...)``` and ```Ftp.raw[cmd](...)``` call the same function (```runCmd```) with the same scope (```Ftp```).

This allows for the following, perfectly compatible uses:
```js
var client = new Ftp(options);
client.raw.pwd(callback);//as before
client.raw('pwd', callback);//new syntax
client.raw('HELP', callback);//previously unsupported
```

Users can now issue any remote command.

This PR also includes relevant tests (new syntax for an "old" command and new syntax for a "new" command). And of course, all previous tests using the old syntax still pass, as well.

The first commit here also removes a duplicate entry for the ```pass``` command in the ```COMMANDS[...]``` array.

Please let me know if you have any questions.