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).
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.
Merge branch 'master' of github.com:chapel-lang/chapel into fix-range-substring
Merge pull request #286 from sungeunchoi/fix-range-substring

Properly implement `string.substring` for ranges

[reviewed by David]

For some reason, I missed the fact that `string.substring(r: range(?))` was implemented in ChapelRange.chpl.  David did not. 

This commit fixes `string.substring` for ranges.  I moved the existing `string.substring`, which was originally written when c_strings and Chapel strings were treated as the same thing, to the `CString` module as `c_string.substring`.  I added a new `string.substring` for ranges (that calls `c_string.substring` and does not leak c_strings) to handle Chapel strings.  I also changed the return type of the string_select primitive to be c_string (yet another thing I missed in a previous commit).

This should fix test/types/string/sungeun/c_string/substr.future.