New features
- We can create our own encodings such as Treatment or Sum encoding. These are subclasses of `Encoding`.
- Added two aliases `T` and `S` that are shorthands of `C(var, Treatment)` and `C(var, Sum)` respectively.
- DesignVector, CommonEffectsMatrix and GroupEffectsMatrix now retrieve their values when passed to `np.array()` and `np.asarray()`.
- Add `poly()` stateful transform.
- `na_action` in `design_matrices()` can be `"pass"` which means not to drop or raise error about missing values. It just keeps them (69)
- `design_matrices()` gains a new argument `extra_namespace`. It allows us to pass a dictionary of transformations that are made available in the environment where the formula is evaluated (70)
Maintenance and fixes
- Fixed a bug in the addition of lower order terms when the original higher order term wasn't full-rank.
- Columns for categorical terms are integer by default. They are casted to float only if there are other float-valued columns in the design matrix.
- Updated __str__ and __repr__ methods of `ResponseVector`, `CommonEffectsMatrix`, and `GroupEffectsMatrix`.
- Added __str__ and __repr__ methods for `DesignMatrices`.
- Added __get_item__ method for `DesignMatrices`.
- Added support for comparison operators within function calls.