FIX PCA error handling for invalid n_components

n_components < 0 was silently handled like None; > n_features gave a
cryptic error message from the bowels of np.linalg.

XXX n_components == 0 is still allowed as changing it makes tests fail,
not sure what it means.