Move 2012 constructors proposal to a subdirectory, for archival.
Provide a framework for the new constructors proposal.
Merge branch 'specAddSpecialFunctions' into updateConstructorProposal

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#	.git/MERGE_HEAD
# and try again.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch updateConstructorProposal
# All conflicts fixed but you are still merging.
#
# Changes to be committed:
#	new file:   spec/proposals/specialFunctions/Makefile
#	new file:   spec/proposals/specialFunctions/Special_Functions.tex
#	new file:   spec/proposals/specialFunctions/spec.tex
#
# Untracked files:
#	commit.txt
#	commits.txt
#	compiler/resolution/functionResolution.cpp.thh
#	modules/internal/#ChapelStandard.chpl#
#	spec/proposals/constructors/2012/Constructors.tex.thh
#	spec/proposals/specialFunctions/spec.aux
#	spec/proposals/specialFunctions/spec.out
#	spec/proposals/specialFunctions/spec.pdf
#	test/io/ferguson/obj.slow/
#	test/modules/hilde/obj.inline/
#	test/modules/hilde/obj.no-inline/
#	test/types/records/hilde/typeBecomesValueArg.chpl
#	test/users/hilde/initVsAssign.chpl
#	third-party/qthread/qthread-1.10/autom4te.cache/
#
#
# It took 2.49 seconds to enumerate untracked files. 'status -uno'
# may speed it up, but you have to be careful not to forget to add
# new files yourself (see 'git help status').
Checkpoint: Draft of current behavior for class and record variable initialization.
Added sections for scalar and tuple variable initialization.
Complete first draft of revised constructors proposal.
Completed description of status quo initialization for all types.
First editing pass.
Add task table and usage appendix.
Make the 2012 proposal compile in its new location.
Finish Changes; start Examples.
Add examples for all types except Arrays.
Finished examples section.
Final version.
Merge branch 'master' into updateConstructorProposal
Update with initial comments from Brad.
Update from Friday discussion notes.
Add support for standalone parallel iterators

When a forall loop is parsed, it is translated into a call to the leader and
follower iterators, approximately:

for block in iter(leader) {
  for i in iter(follower, block) {
    body;
  }
}

For standalone iterators, we don't want this nested loop.  To accomplish this,i
I added a condition with a chpl__tryToken.  Now unzippered forall loops are
built as:

if chpl__tryToken {
  for i in iter(standalone) {
    body;
  }
} else {
  for block in iter(leader) {
    for i in iter(follower, block) {
      body;
    }
  }
}

This way, if a standalone parallel iterator exists and can be used, it will be
chosen and the leader-follower case will be folded out during resolution.  If
the standalone iterator does not exist, the standalone side will be removed and
the leader-follower branch will be used.  For the most part standalone
parallel iteration is treated the same as the leader case throughout the rest
of the compiler.  One main exception is that forall intents are not yet
implemented on the standalone side.

A simple standalone iterator is defined in the test
standaloneParallelIter.chpl.  It uses a coforall to generate parallelism
and define blocks and iterates over the blocks yielding individual elements.
It also defines a leader and follower iterator to verify the standalone
iterator is chosen over them and that zippered iteration still calls the
leader/followers.  Finally it uses a for loop that results in a serial
iterator getting called.

Tested on the full suite for standard linux64
Update sub_test to pass walltime to slurm and look for timeouts

We let slurm handle timeouts instead of using sub_test's mechanisms. However,
we never actually looked for timeouts or told slurm what timeout to use.
Instead we just let the default timeout be used and didn't record the fact that
a timeout occurred.

This updates sub_test to pass --walltime to the executable which will in turn
set the actual slurm timeout. We also not look for the timeout and create an
appropriate error message like we do for pbs.
Add a nodelist option to the slurm launcher

Allow a nodelist to be specified for the slurm launcher. This can either be set
by passing the executable a --nodelist or by setting the env var
CHPL_LAUNCHER_NODELIST