refactor proposal to make hopsy more intuitive

Right now hopsy uses code such as :

proposal = ProposalType(problem) markov_chain = MarkovChain(proposal=proposal, problem=problem)

In essence the problem is passed twice! This is unnecessary if we update the proposal interface

Edited by Jadebeck, Johann Fredrik