Methodize TypeNames
Change calls for TypeName stuff to methods
Remove instruction counting.

This was somewhat under-used, and the information it produced wasn't
even particularly useful. It was also a major stumbling block in
trying to refactor CrateContext to avoid using @mut.

A replacement system can be implemented later.
Make log_fn_time a method
Start refacting LLVM Type handling
More Type refactorings
Add the rest of the atomic operations.

This makes the handling of atomic operations more generic, which
does impose a specific naming convention for the intrinsics, but
that seems ok with me, rather than having an individual case for
each name.

It also adds the intrinsics to the the intrinsics file.
Initial Type Refactoring done