More graceful handling of "const char *" by the C++ backend.

A problem with the C++ backend is that prototypes that define the return type as "const char *" fail when the result is assigned to a "char *" variable by generated code. In order to insert the necessary casts, we define "const char *" as a separate cconststring type and supply a converter that converts it to a "char *".

While in the long term a more general solution is needed, cstring values need special treatment, anyway.

In particular, this change allows the compiler itself to be compiled with the C++ backend.

Note: This is a bit of a hack, so I'm not necessarily expecting it to be merged, but I thought I should at least get the ball rolling. A cleaner solution that handles general C++ const types would be a better way.