Perplexing GHC-7.0.3 behavior with hairy type-level code (regression from 6.12.3??)