Improve readability of `core.py`

This pull request aims to improve the readability of core.py

* Removes bind and bindstar in favor of `lall` and `lany` (logical all and logical any)
* Introduces lanyseq to be used by condeseq
* New function `earlysafe` to encapsulate the common try-except blocks for EarlyGoalErrors
* adds groupby to util.py

* Adds section headers to core.py and rearranges code to fit within those headers
* Added docstrings