Add some missing casts to and from c_strings.

Removal from codegen of the conversion from c_strings to fundamental types means that they
had to be added as explicit casts in Strings.chpl.

This version passes all primers tests (local only).

###DETAILS

####/compiler/AST/primitive.cpp
The "string_copy" primitive actually returns a c_string_copy.

####/modules/internal/ChapelIO.chpl
Reworked StringWriter, so its state data is a c_string_copy, not a c_string.  This allows
us to make the calls to chpl_free_c_string() unconditional.

####/modules/internal/String.chpl
The cast to string type now also works if the source type is a c_string or a
c_string_copy, so I was able to remove the "x.type != c_string" exclusion.

I removed the "cast a string to types other than c_string, and enumerated the types to
which a string can be cast.

The casts from c_string to primitive types formerly performed in the codegen for PRIM_CAST
are now enumerated explicitly in module code.

The cast from complex to c_string_copy did not make it into the previous commit, so that
support is added here.

I needed to provide an implementation for _defaultOf(c_string_copy).  It returns a
_nullString, which is effectively "(const char*) NULL".

I needed to provide definitions of assignment from c_string to c_string_copy and
c_string_copy to c_string_copy.

I needed to supply a cast from a chpl_string to a c_string_copy.  This creates a
newly-allocated copy.

I needed to provide a cast from boolean types to c_string_copy.

I had to supply a return type for the real_to_c_string_copy() extern prototype.

####/modules/standard/IO.chpl
I needed to add a cast from ioNewline and ioLiteral to c_string_copy.

####/runtime/include/chplcast.h
####/runtime/src/chplcast.c
Removed the older implementation of the integral_to_c_string and real_to_c_string functions.
Adjusted indentation in real_to_c_string_copy().
Some tweaks after first paratest run.

Now the result of a cast of any type to a string-ish thing is c_string_copy.  Adjusted the
memory management in that routine and also in string.write and c_string.write routines.

Made the coercion cast from c_string_copy to c_string return the right type.
Added a writeThis() method for c_string_copy.

Down to 401 failures (std).