Send paths as base64 strings

Paths are basically bytestrings to the OS, and we've caused ourselves
a lot of grief by trying to treat them as sets of characters instead
of bytes. Legacy data can, and frequently does, contain data in non-
Unicode encodings, mixed encodings, invalid encodings, etc.

v2 of the API sidesteps this by treating all paths as sets
of arbitrary bytes, and communicates them to/from outside services in
base64-encoded strings. The v1 API remains available and returns paths
as strings like before.

refs #6067
File explorer: base64 decode directory names

This updates the file explorer to use the new v2 API, which requires
a new base64 JavaScript library. The library used comes from here:
https://code.google.com/p/javascriptbase64/

refs #6067