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
Fix for Coverity Issue 1241468.

Coverity is complaining about a negative return from _ltoa_convert defined in
qio_formatted.c.

It is easy enough to rewrite this routine so that it returns a result that can never be
negative.  Hopefully, that will quiet Coverity on this issue.

Redefined the return value from the number of characters to skip *before* encountering the
start of the converted number to the *position* of the first valid character.  Before, the
return value could range from [-1..tmplen-2].  Now its range is [0..tmplen-1].

I changed the client code to accommodate this new definition of the return value
(basically subtracted 1 from it).

I changed the return type to size_t, which is an unsigned type so it can't go below zero.
Update length calculation in _ltoa.