[WIP][SPARK-1720][SPARK-1719] use LD_LIBRARY_PATH instead of -Djava.library.path

This is another implementation about #1031
The semantics of `buildEnvironment` is very strange to me. It's not intuitive to me at all why the user should use `CommandUtils.buildEnvironment(command)` instead of `command.environment`. I think we should add the library path when we create the `Command` in the first place (e.g. in `SparkDeploySchedulerBackend`).

(Same for `buildJavaOpts`, which should really be private since it's used only in the same file in 1 place)