Add platform.TargetPlatform abstraction

This trait defines properties specific to the target platform. At the
moment this consists of definitions of various native types.
Implementations are provided for Posix32, Posix64, Win32 and Win64.

There is a new --target-platfom flag which will set the platform for
both compilation and the REPL. If no platform is specified then
DetectJvmPlatform() is called to guess the platform by reading JVM
properties.

Currently this is only used by the library loader to inject the correct
types when (llambda nfi) is imported. In addition to the hardcoded types
it defined before it now also includes definitions for size_t and
wchar_t.