Make entry point configurable and link against standard CRT files if provided by the C library
Refactor build system flags and add C++ support

We now assume all flags (CFLAGS, LDFLAGS and ASFLAGS) will be passed via the
gcc layer in both kernel and non-kernel build and so will always have -Wl
and -Wa prefixes respectively.

Through Makefile.flags a CCFLAGS variable is used to represent flags that
will eventually be appended to both C and CXX flags as it is expected these
targets will have most of their flags in common.

Most flags are common between both kernel and non-kernel builds and instead
of building up two sets of flags the whole time common variables are used
that are assigned to both
Add asflags for cortex a9 and a15
Correct A15 assembly flags