Factor out common logic from Spanned implementations
Factor out common logic from Spanned implementations

To compile the common code just once, rather than per distinct type T.

This also fixes a bug in the cfg(procmacro2_semver_exempt) case that
made Spanned::span always return call_site.

dtolnay/syn