Fix bug where ExplicitList wasn't handled by subst

This change makes subst use transformBi from Uniplate using Data.Data, which
required some changes throughout the codebase to ensure the compiler can
correctly infer the type.