Remove nonportable conditional commands from Makefile.in

Not all makes support conditional IF/ELSE/ENDIF statements.
Specifically, the /usr/bin/make supplied with Solaris 11 does not.
There is probably some more portable way to do what was intended,
but for now I'll just get rid of the problematic lines and move
on to other issues.
Fix mismatched types in sprintf in src/core/exceptions.c

MVM_string_utf8_encode returns an unsigned char pointer, but
the expression is expecting a signed char pointer.  gcc complains,
but continues anyway.  The Solaris compiler aborts.
This patch casts the MVM_string_utf8_encode return to (char *),
but somebody who understands the function might be better positioned
to understand whether the MVM function definition itself ought to
be changed instead.
Add build/setup.pm section for Solaris with Solaris cc.

This adds a generic 'cc' compiler type, intended as a workable
default if the user does not have gcc installed.  It also adds
Solaris-11 specific flags suitable for use with Solaris cc.
I have not tested other Solaris versions, nor have I tested
this with Solaris with gcc installed instead.
Avoid 'make -C'. Use a simple cd instead.

Not all 'make' variants support 'make -C dir' to change
directory.  GNU make, FreeBSD and NetBSD make do, but Solaris make
and OpenBSD make do not.  This commit simply changes directory
manually (and then changes back at the end for Windows, where
the cd is persistent).  A more portable version might do something
like parrot's make_c command.