Refactor inference



A collection of refactorings that I found it hard/tiresome to divide:

    Make extern fn() assignable to any closure type, rather than a subtype of the closure types.
    Remove unused int_ty_set and float_ty_set
    Refactor variable unification and make it more DRY
    Do fn sub/lub/glb on the level of fn_sig
    Rename infer::to_str::ToStr to infer::to_str::InferStr
    Capitalize names of various types
    Correct hashing of FnMeta

r? @pcwalton