Don't break SI-2066

Branch based on #4.

Use of variance declaration in `Traverse#traverseImpl` implementation is unsound, per [SI-2066](https://issues.scala-lang.org/browse/SI-2066).  As discussed in scalaz/scalaz#328.

This is the minimum to improve soundness local to this code.  Since it has the [downstream effect of causing other `traverseImpl` implementers to also break SI-2066](https://github.com/ermine-language/ermine-scala-core/blob/132cc27/src/main/scala/ermine/syntax/Core.scala#L280-L300), do you think it might be worth removing from other `traverse`ish methods?