trust cv_bridge more

This first trusts cv_bridge no matter what, and then falls back to any conversion from 3 channels to grayscale assuming it is RGB and so on.
Before, the type of the image was checked (color or mono) which was wrong (as cv_bridge can also do YUV422 and Bayer) and not future proof. That's why you should always trust cv_bridge first :)
The change looks big because of the indentation change.