Add -E support in executables, for use by launchers in forwarding the
environment to the user program processes when the underlying system
launcher can't do so.  The changes are:

runtime/src/arg.c
  Add -E option parsing and environment variable setting.

doc/release/README.executing
  Document the new option.

test/execflags/ferguson/help2.good
test/execflags/shannon/configs/help/basehelp.txt
test/execflags/shannon/help.good
  Update the expected "-h" output.

test/execflags/gbt/dash-E-1-opt.chpl
test/execflags/gbt/dash-E-1-opt.execopts
test/execflags/gbt/dash-E-1-opt.good
test/execflags/gbt/dash-E-1-opt.skipif
test/execflags/gbt/dash-E-2-opts.chpl
test/execflags/gbt/dash-E-2-opts.execopts
test/execflags/gbt/dash-E-2-opts.good
test/execflags/gbt/dash-E-2-opts.skipif
  New unit tests.
Merge branch 'master' of github.com:chapel-lang/chapel into dash-E
Ready for unit testing.
Merge branch 'master' of github.com:chapel-lang/chapel into dash-E
Snapshot:
- update parseArgs() to know whether it's the launcher or user
  executable and whether it's parsing -E options or others
- call parseArgs() early to do -E options in main, later for the rest
- call parseArgs() in the launcher
- Merge the two dash-E tests into one, with two .execopts entries.
Add chpl_free_c_string() and use it to clean up leaked c_strings in
string and IO code.
Merge branch 'master' of github.com:chapel-lang/chapel into c_string-leaks
Resolves all but 3 of compile-time failures.
Removed assertion that the PRIM_INIT clause in preFold is never reached.
Fix a few bugs with PRIM_TYPE_INIT.

resolveCall() must apply default generic type resolution to the PRIM_TYPE_INIT primitive.

CallExpr::prettyPrint() had to be updated to recognize PRIM_TYPE_INIT as an "unusual"
case.
Merge branch 'master' into addPrimTypeInit

Conflicts:
	compiler/passes/scopeResolve.cpp
Strengthened CallExpr::verify() and used this in PRIM_TYPE_INIT case in removeRandomPrimitive().

In CallExpr::verify(), added a clause to ensure that every CallExpr has a valid
parentExpr.  Also added a test specific to PRIM_TYPE_INIT, that that parentExpr is a
CallExpr.  Both of these added clauses pass a full --verify test run.

Added comments in the clause for PRIM_TYPE_INIT in removeRandomPrimitive(), saying that we
don't have to test either of these invariants (call->parentExpr != NULL &&
toCallExpr(call->parentExpr) != NULL), because CallExpr::verify() does it for us.

There is a general caveat on this assumption, since verify only operates between passes.
If the current pass violates the invariant, one or both assumptions may fail.  A good
debug technique for this would be to run verify() on the suspect AST node.
Change the conditional on 's' in chpl_rt_free_c_string() into an
assertion.  This function should only be called from the modules via
chpl_free_c_string() which already employs a null check.
Merge branch 'master' of github.com:chapel-lang/chapel into c_string-leaks
A small rewrite of channel.readstring() to avoid creating intermediate
Chapel strings and also to free intermediate c_strings.

This along with the previous changes reduces the total allocated
memory of regexdna.chpl by about 6% and increases the amount of freed
memory by 96% (which is still less than 10% of the total allocated
memory).
Merge branch 'master' of github.com:chapel-lang/chapel into c_string-leaks
Minor fixes to the -E test:
- Remove the second test (dash-E-2-opts).  There's only on dash-E test
  now, and it handles both the 1-arg and 2-args cases.
- Fix the skipif.  It was backwards.
Rework the -E support.

The significant change here is a complete rework of -E parsing.  In the
course of the review for the earlier version of this, we discovered a
major flaw: because regular command line processing runs after a certain
amount of runtime initialization has already happened, any -E options
that set environment variables needed during that initialization will
not have been seen yet.  In particular, comm layer initialization is
done before command line parsing, so for example GASNet environment
variables would not be available when the GASNet init function was
called.  Thus, -E environment variable setting cannot be done during
regular command line parsing -- that's too late.

To fix this problem, now -E parsing is done earlier, in a separate
command line parsing pass specifically for that purpose.  The major
changes (from the original code, not prior commits on this branch) are:
- The parseArgs() function now takes a mode to tell it whether to just
  parse for -E options or to do normal parsing.  It also takes a flag
  telling it whether it's being called in the launcher or not, since we
  have to skip -E options in normal parsing in the user executable
  (they've already been handled) but attend to them in the launcher
  (though, if they are present there, they have a different meaning).
- I didn't want to duplicate the case-by-case logic of normal parsing
  when doing the -E parsing, because it would create a maintenance
  burden when options changed.  However, during -E parsing we have to be
  able to skip the options that aren't -E ones, and this requires
  understanding which have a sub-argument and which do not.  So, I
  expanded the flagType type and flagList table so that each flag
  (option) has separate fields for its single-dash form, its
  sub-argument, and its double-dash form.  That allowed -E parsing to
  rely on the flagList table to decide when to take into account a
  sub-argument, without having to worry about exactly which flag was
  being dealing with.  As a result of this I also had to rewrite
  printHelpTable() completely, however.
- While in arg.c, I also removed some trailing white space on a few
  lines.

The secondary change here, to the .good files, was to make the help text
for -E show the sub-arg as "<envVar>=<val>" instead of "<name=value>",
as I had it in previous commits on this branch.  This makes it a lot
more like what we already show for "-s".
I had created a memory leak by having a pointer to a Vec instead of just a Vec
itself.  This makes that variable no longer a pointer.
Merge pull request #82 from hildeth/addPrimTypeInit

Add PRIM_TYPE_INIT and use this to define the default type constructor.

This pull request is in support of calling user default constructors.

The mechanism for calling user default constructors adds many more constructor calls, and in some cases the default type constructor called the default constructor (through PRIM_INIT) recursively. I broke the loop in this recursion by observing that the type of the result of the call to the default type constructor is already known at the place where PRIM_INIT appeared.

PRIM_TYPE_INIT is implemented identically with PRIM_INIT, except it provides the compiler with the info that only the type of the result is important. Therefore, in resolving an expression containing PRIM_TYPE_INIT, the resolution tree is pruned and only the type of the result (the LHS of the containing MOVE expression) is updated.

Due to PR#67 (adding the _defaultOf() function to provide a standard interface for the creation of default values) courtesy of @lydia-duncan, this new primitive may ultimately prove to be unnecessary. But for now, this pull request will bring chapel-lang:master closer to my hildeth:callDefaultConstructors branch, which will make the initial merge easier. Following the merge, if this primitive proves to be unnecessary, it will be removed.