Remove most intrinsics from the compiler, replacing them with regular calls to them
Fix tests
The nomangle attribute is not needed and does not exist
auto merge of #5724 : JensNockert/rust/remove-intrinsics, r=brson

I am not convinced that this is a great idea, but I wanted to throw this out here since I noticed it was possible to save a few hundred lines of code with no reduction in functionality.

The main ideas of this commit is to remove most of the special implementation for llvm-intrinsics in src/librustc/middle/trans/base.rs and friends, and instead declare them as semi-standard functions instead with a combination of attributes instead.

In the end, this means that the compiler doesn't need to know about every intrinsic and we only need to provide definitions for the ones we use in the core/std library and users can provide the rest if they need them.