added include guards to solver factory
separated out solving and integer finding functionality into non-member, non-friends in the solver factory