Add a type parameter for 'empty' and 'never'

As per #80. Adding type parameters breaks the source compatibility.

Hold off until we prepare to release 0.24.0.