BUG: DataFrame.where does not respect axis parameter when shape is symmetric
Fixes GH #9736.

The problem was that at the `Block` level, `where` and `putmask` did a lot of guessing about how the block and the other parameters needed to be transposed in order to align correctly. It guessed wrongly when the DataFrame was symmetric because the shapes match up in both directions. This change tries to make everything explicit and remove the guessing.
