Feat
- 1) Add support for `Optional` columns in schema definitions. Add tests too. 2) Add custom errors when columns are missing and when schema definition is wrong. 3) Non-small refactor in model.py. Move colunm checks to top and simplify some things (more can be done though)
Fix
- Remove `regex` optional argument from `check` custom check decorator
Refactor
- Decreate nesting in _select_matching_names
- Refactor `_validate_multiindex` so it works like `_validate_columns` (also refactored a bit), and overall simplifies the code