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
Allow constant c-like enum to integral/float cast
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
Fix bug in coherence that causes all cross-crate impls to be regarded as
inherent impls, not just those of the `impl Type` variety.
Make object types not implement associated trait.  Fixes #5087.
Remove trailing whitespace.
auto merge of #5252 : nikomatsakis/rust/issue-5087-make-trait-not-impl-self, r=pcwalton

Two changes:

- The first fixes an inconsistency in coherence whereby extension methods were added to the inherent methods table, but only in cross-crate scenarios.  This causes some minor fallout in tests and so forth.  In one case (comm) I added inherent and trait methods so as to avoid the need to import traits like `GenericPort` just to use a port.

- The second makes objects not implement the associated trait, as discussed in #5087.

r? @pcwalton
removed unused abstraction over paths and value_paths