Added documentation, fixed pylint warnings, slightly modified logic.

Mostly the logic hasn't changed, but the store_guess keyword
argument now works for all optimzation algorithms. Additionally,
a new NULL algorithm has been added that only uses store_guess.
This commit was primarily about added comments and docstrings,
along with bringing things into PEP 8 compliance. Well, closer
anyway.