throw TypeError on invalid transform projection

the transform method silently fails if it's passed a `null` or `undefined` source or dest Projection. This can make debugging it very difficult. I think throwing a `TypeError` is more appropriate.