[MRG] Input validation refactoring

Refactor input validation to make it more consistent.

Todo
* [x] Tests
* [x] docstrings
Why are you checking that it is _not_ C contiguous? I agree that, as this is a 2D array, it cannot be F and C contiguous, but in my opinion you are overconstraining the tests, which is not a good thing.