Inlineable classes

This WiP PR will host the inlineable classes optimization. Follow up in the comments.
Indeed. For the record it happens in the code generated by `val Pattern(...) =` style of assignment. If the rhs is typed as `Pattern` (e.g., `Tuple2`), then code does:
```scala
val temp = ...
l: {
  if (temp != null) {
    val x = temp._1
    val y = temp._2
    return(l) something
  }
  return(l) throw new MatchError(temp)
}
```