Fixing the type issue with the new spans

They key problem is that if T extends TokenSpan, T extends SpanVar[TokenSpan], not SpanVar[T]. Since I don't want to propagate these type arguments all the way down to concrete spans I decided to break the hierarchy in the span level.