SI-5103 Pushing towards Singleton- and Constant type inference

Our test compiles, albeit with a spurious "a pure expression does
nothing in statement position" warning.

@folone's work in allowing
us to directly express singleton types will no doubt have to
work on these sort of warnings (and worse, spurious elision of
non-constant terms!)

Here's how `partest --pos` fares:

```
test/partest --update-check \
  /Users/jason/code/scala/test/files/pos/annotated-treecopy \
  /Users/jason/code/scala/test/files/pos/hk-infer.scala \
  /Users/jason/code/scala/test/files/pos/hkrange.scala \
  /Users/jason/code/scala/test/files/pos/infer.scala \
  /Users/jason/code/scala/test/files/pos/infer2-pos.scala \
  /Users/jason/code/scala/test/files/pos/lub-dealias-widen.scala \
  /Users/jason/code/scala/test/files/pos/lubs.scala \
  /Users/jason/code/scala/test/files/pos/nothing_manifest_disambig-new.scala \
  /Users/jason/code/scala/test/files/pos/nothing_manifest_disambig-old.scala \
  /Users/jason/code/scala/test/files/pos/t0625.scala \
  /Users/jason/code/scala/test/files/pos/t1756.scala \
  /Users/jason/code/scala/test/files/pos/t2693.scala \
  /Users/jason/code/scala/test/files/pos/t2782.scala \
  /Users/jason/code/scala/test/files/pos/t3343.scala \
  /Users/jason/code/scala/test/files/pos/t3477.scala \
  /Users/jason/code/scala/test/files/pos/t3577.scala \
  /Users/jason/code/scala/test/files/pos/t3777.scala \
  /Users/jason/code/scala/test/files/pos/t3862.scala \
  /Users/jason/code/scala/test/files/pos/t4018.scala \
  /Users/jason/code/scala/test/files/pos/t4501.scala \
  /Users/jason/code/scala/test/files/pos/t4553.scala \
  /Users/jason/code/scala/test/files/pos/t4692.scala \
  /Users/jason/code/scala/test/files/pos/t5022.scala \
  /Users/jason/code/scala/test/files/pos/t5953.scala \
  /Users/jason/code/scala/test/files/pos/t6846.scala \
  /Users/jason/code/scala/test/files/pos/t6948.scala \
  /Users/jason/code/scala/test/files/pos/t7226.scala \
  /Users/jason/code/scala/test/files/pos/t7785.scala \
  /Users/jason/code/scala/test/files/pos/t7818.scala \
  /Users/jason/code/scala/test/files/pos/t8237.scala \
  /Users/jason/code/scala/test/files/pos/t8237b.scala \
  /Users/jason/code/scala/test/files/pos/tcpoly_infer_easy.scala \
  /Users/jason/code/scala/test/files/pos/tcpoly_infer_explicit_tuple_wrapper.scala \
  /Users/jason/code/scala/test/files/pos/tcpoly_infer_implicit_tuple_wrapper.scala \
  /Users/jason/code/scala/test/files/pos/tcpoly_infer_ticket1864.scala \
  /Users/jason/code/scala/test/files/pos/tcpoly_infer_ticket716.scala

1213/1249 passed, 36 failed (elapsed time: 00:03:49)
```