mk: Split target triples into bulid triple + host triples + target triples

For cross compiling to targets that don't want to build a compiler
mk: Refactor platform.mk a bit
submodule: libuv for android
mk: rewrite make files
mk: mingw32 flags added
mk: mingw32 fix
mk: Cross-compile fixes
mk: cleanup - lib and executable suffix handling
mk: rt.mk fix for libuv cross compile
mk: Restore toolchain config for i386 mac/linux, and freebsd

Conflicts:
	mk/platform.mk
mk: platform.mk more flags added
mk: platform.mk typo UNIXY
mk: install/uninstall for multiple target
mk: --android-cross-path to rustc
Update uv submodule
mk: Cleanup. Minor fixes
Merge remote-tracking branch 'brson/cross7'

Conflicts:
	configure
	mk/rt.mk
auto merge of #5264 : brson/rust/cross7, r=brson

Follow up to #5242. All credit to @yichoi.
Permit casting region pointers to unsafe ones.
Inline constants across crates.