asInstanceOf for singleton types

```
scala> val x = "a"
x: "a" = a

scala> x.asInstanceOf["a"]
res1: "a" = a

scala> "1".asInstanceOf["2"]
x asInstanceOf Throwable
java.lang.ClassCastException
  ... 33 elided

scala> "1".asInstanceOf["1"]
res3: "1" = 1

scala> 1.asInstanceOf[1]
res4: 1 = 1

scala> 1.asInstanceOf[2]
x asInstanceOf Throwable
java.lang.ClassCastException
  ... 33 elided

```