Implemented a drive cache to make all operations much faster.

PS likes to call the same API with the same parameters multiple times. For example, it will repeatedly call ItemExists(<current directory>) for any operations involving the current directory. Naively doing a FTP operation for each of those was a major contributor to PsFtpProvider's slowness.