(PE-4496) mkdirs! allows string as path arg

This commit contains two changes to the `mkdirs!` function:

1) If a `String`-type argument is supplied as the path argument, the
   function will now properly process the argument for directory
   creation, just as the previous commit would also do for a `File`-type
   argument.  In the previous commit, an `Exception` was thrown as the
   function tried to call `getParentFile` on the path argument, which
   is only appropriate for a File and not a String object.

2) If the supplied path argument refers to a path which already exists
   as a `File`, a Slingshot exception indicating that the "Path is a file"
   is now thrown.  Previously, the caller would see a more cryptic
   `AssertionError` being thrown because the return argument from the
   function did not equate to a directory.
This PR didn't introduce this, but I suspect this should also be a `throw+`.