Summary
1. Completely refactored trajectory interpolation to split interpolation of each trajectory segment into separate interpolator functions. This fixes all of the issues with undefined behavior when interpolating.
- Note: The deprecated `as_list` argument has been removed from `Interpolator.get_traj_function()`.
2. Added several checks to ensure trajectory definitions are designed correctly before trying to parse them.
3. Split out useful small function into "utils.py".
4. Added docstrings to every function