Shell wrapper: Reduce fragility, follow best practices for shell

- Add documentation
  - Intending to maintain readability for folks with less familiarity w/ the
    final points of POSIX sh.
- Robustness fixups
  - Rather than requiring bcprov jar name to match hardcoded value exactly,
    include all jars in lib directory. Warn if none exist.
  - Correctly quote all expansions. This fixes support for filenames with
    spaces, which were previously not correctly handled.
  - Honor JAVA environment variable if already set; otherwise, use JAVA_HOME;
    hardcoded path only as fallback
- Convention fixups
  - Only environment variables and shell builtins should be capitalized; this
    avoids namespace conflicts with locals.
  - Wrapper script is an executable, not a library, and so should not have a
    filename extension (just as one runs `ls`, not `ls.elf`).