[WIP] Input validation refactoring

Refactor input validation to make it more consistent.

Todo
* [ ] Tests
* [ ] docstrings
make_2d -> ensure_2d?