Remove most floating-point/integer intrinsics from the compiler

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.