[WIP] Solver optimizations

Packagist's composer update is roughly 14 million function calls
- Literals on rule are now public: Reduction of ~500k function calls
- id on BasePackage is now public: Reduction of ~1.3m function calls
- ruleById on RuleSet is now public: Reduction of ~500k function calls
``Rule[]`` would be better for IDE support