Add spark.executor.memory to differentiate executor memory from spark-shell

Consider this as a request-for-comment; I'd like to have different heap sizes for my (standalone) cluster's Master, Worker, shell, and Executor processes.

This allows Master, Worker, and spark-shell to use the SPARK_MEM they're given at startup (as currently happens).

But now when running spark-shell, if -Dspark.executor.memory is set, that will be used for that job's executor's heap size on each of the workers.