Fix FTP write() and delete() calls not updating directory listing cache

The directory listing cache is used to determine which directories in a
path need to be created when `mkdir` is called. The directory listing
cache was not being updated with writes and deletes changes, so a
directory or file created during an FTP deployment would always return
false. This could cause an FTP mkdir command to be called twice for the
same directory and an exception would be thrown.

Resolves #37

Also fixed:

* Deletion fails if passed path doesn't exist
* Calling exists() with a root path always returns false