[CB-1933] Changed button labels to an array.

This allows commas to be included in button label text.
Use pushd/popd instead of subshell

Improves the error message that happens when ant is not installed.
[CB-2435] Split common methods out of FileUtils into FileHelpers

Also included in this change:
- Fixed getMimeType for content:// URIs.
- Made getRealPath take a URI string.
- Added basic android_asset handling.
There is no such thing as a "real path" for a file:///android_asset URI.  However, it is possible to get an input stream to one.

And even more minor changes:
- removed unused FileReader/FileWriter instance variables
- added logging when getRealPath fails
- fixed indentation issues
- removed a try/catch in favor of throwing
- removed a null check in favor of throwing
- moved getEntry back to FilePlugin
[CB-2546] Moved read calls to a background thread.
Add a new type to the Native->JS bridge for binary strings.

It's needed since the bridge truncates strings that have null
characters in them :(.
[CB-2632] Implement FileReader.readAsBinaryString
Implemented a conditional check to allow for the duration to be provided on the Android platform for SDK 8 and above.
Implemented a conditional check to support providing the duration limit for the Android platform SDK 8 and above. The value is passed using the string literal value to ensure the logic is not dependent on SDK version specifics.