[Do not Merge][Discussion] Action Plan for improving solvers.

This is PR is there to discuss the design aspect to improve the current solvers. I'm doing it here because I think github PR's are better for this purpose than mailing lists. People can comment on specific lines. We can write comments in markdown. We can ping specific people and also we can do revisions of the text.

TODO:

- [x] Discuss and conclude about the usage of sets as output of solve.
- [ ] Complete the audit of the current solvers
- [ ] Decide the submodules in which the current solve needs to broken.
- [ ] Summarize the discussion on the mailing list, and answer the questions raised there.
- [ ] Discuss the new algorithms to be implemented in solve.