Update Scala 2.12.1 (Dec. 2016, three years later).

After PR 5294 (Fields phase fully expands lazy vals and modules), you can read in commit 743f0d2:

Lazy val without local.

Now synchronized is erased specially to avoid boxing, we can drop that work around.

Note that this does add an extra cast and getter call on the slow path, but that likely doesn't matter.