start: do not use [] for -U option's default value

Setting a default of [] instead of None results in the option appearing
in the specified_options_dict even when -U is never specified. The
specified_options_dict ultimately overwrites the config with any options in the
options dictionary that are not None. Since the default value for -U,
[], is not None this caused the userdata_scripts list from the config to
be replaced with []. This patch fixes the issue by setting the default
value to None which removes it from the specified_options_dict all
together provided the user did not specify -U.
config: expand ~ and env vars in userdata_scripts list

Added a callback to the userdata_scripts cluster config setting that
exands ~ and all environment variables in each path.
cli: log all BaseException stacktraces to debug log

The cli module catches all exceptions that subclass StarCluster's
exception.BaseException and formats them as 'user-friendly' error
messages without stacktraces. This means if there's a bug in the code
that raises these types of exceptions it can be hard to debug where the
underlying issue comes from. Updated the code to always log the
stacktrace of these exceptions to the debug file in case we need to
debug code that raises them.
commands: sort all instance type option lists