Make equivalencies on partial units work.

This is to address the shortcoming of the equivalencies mentioned in https://github.com/astropy/astropy/pull/692:

```
Before we implement any more, I'd like to understand why defining ergs <-> photon does not allow ergs / s <-> photon / s to work. 
```

This factors the equivalencies out as partial units instead.

This also makes `dimensionless_constant` a private method -- it should have been all along.

I don't know whether this should be put in 0.2 as a bugfix (probably), but I've made it against https://github.com/astropy/astropy/pull/692 because there are some good examples to test there.