WIP: more inlining

This pull requests adds inlining and improved call site type specialization. It separates function calls of type unions and provides support for multi-line inlining. (It also attempts to inline Union, but that part is causing the tests to fail)

While the standard inlining heuristic has not been updated, you can test the multiline inlining by forcing a function to be inlined by adding an `:inline` keyword:
```julia
function abs(x) :inline
    if x > 0
        x
    else
        -x
    end
end
```