Updated the Vim highlighting for Chapel
Properly implement substring for ranges.

For some reason, substring with range arguments was never properly
implemented in the modules even though the runtime function to do so
(string_select) has been present for a while.  It's been a mystery to
many of us how this works, but the guess was that was some form of
promotion.

This commit adds the explicit range version of substring.  It also
changes the return type for the string_select primitive to be c_string
(yet another one I missed).
Update REGRESSIONS and TRIAGE files.
Merge branch 'silenceSomeFutures'
Fixing a regression from #250; adding some sync var-related tests+notes
Initial update to licm to support hoisting wide things

Initial update is simple to stop not-hoisting wide things, and to not hoist
globals.
Add list of currently known failures
update list of regressions
update what variables we check to see if we will perform licm

Licm is not designed to handle functions that have sync or atomic variables in
them. This makes that check also look for references to atomic variables.
Update to licm for hoisting wide things

Because flattenFunctions does funky things, a variable that should be passed by
ref isn't always done so. As a result I also have to check if an argument is a
ref argument in addition to if it is passed by ref.
Update some comm counts

Update comm counts for:
 - distributions/robust/arithmetic/performance/multilocale/alloc
 - distributions/robust/arithmetic/performance/multilocale/alloc_all

This updates the comm counts for most distributions for these tests as they
improved with the updates to licm. Note that alloc_all.replicated did not seem
to change, but I didn't investigate at all.
Remote list of current failures
Clean up licm.

Now that licm has been moved before insertWideReferences, there's no reason to
check for wide things.

I also updated how to check if a variable is passed by reference and added a
better comment to it.
Update compiler perfkey order to reflect licm being moved
Update lots of comm counts for the better!
Remove accidentally added .good file
Merge pull request #289 from vasslitvinov/syncvar-followups-to-coercion-wrapper-elimination

Fixed a regression from #250; added some sync var-related tests+notes.

* Fixed this regression from #250 aka coercion wrapper elimination:

[Error matching .bad file for users/vass/type-tests.todo]

* This .bad mismatch exposed a change of behavior of that test.
It used to be a compiler error; now it goes through the compiler
and executes incorrectly.

* To document this, I created a separate future for that,
with a few variants while I was on that.

* All of this applies equally to single variables;
I did not take the time to create single-var variants of these tests.

The only exception is ref-sync-6-*, which are the 'single'
counterparts of ref-sync-5-*.

* I noted that sync/single-related tests are in two places
in our test tree, by creating two .SEE_ALSO.txt files:

  test/types/sync
  test/parallel/sync

  test/types/single
  test/parallel/single

* Added a note to jbreitbart.future about allowing syncs/singles
of syncs/singles.
David's keen eye noticed that there was in fact a working substring
for ranges in ChapelRange.chpl.  I move body of that version to the
CString module in String.chpl.
Add LLVM backend support for C For Loops
Merge pull request #291 from mppf/fix-llvm-c-for-2

Add LLVM backend support for C For Loops

Directly support C for loops in the LLVM backend.
Tested with make check for LLVM and non-llvm builds and
with test/types/range/diten/cForLoops and with zipRange.chpl
therein with --no-scalar-replacement and/or --no-inline. Tests OK.

Also fixes up some previous LLVM code generation that added
unnecessary ICmpNE in some cases.

Reviewed by @ronawho

The LLVM backend seems to be working after this patch. I'll do more testing before the release.