Improve desugaring to generate less temporary variables.
Emit ?: and , for If and Block in expression position.
Mark scala.Predef as an elidable module accessor.

Just because we know it's fine, and it appears so many times
in the output otherwise.
Update checksizes for the last 3 commits.
Merge pull request #868 from sjrd/less-temp-vars-in-desugar

Less temporary variables in desugaring
Mark more constructors as inlineable.

This typically flattens an entire inheritance chain of
constructors as a single constructor.
Merge pull request #871 from sjrd/inline-more-constructors

Mark more constructors as inlineable.
Add RefinedType to track types more accurately.

In particular, we track whether:
* the type is exact, i.e., the value is of that particular
  class, not any of its subclasses
* the type is nullable.

The former is mostly useful for determining the target of
a dynamic call: if the type is exact, we can perform the
lookup as if it were a static call, which always gives 1
target, which means more inlining is possible.
Merge pull request #873 from sjrd/refined-types

Add RefinedType to track types more accurately.