Cut BanditAlgo (squashed history)

This huge commit changes a number of things:

* Removes Bandit.rng:
    Semantically, a Bandit/Domain represents a search space.  If the eval_fn
    has a stochastic element to it (some test functions do), then that should
    be in the eval_fn, not the Bandit. The Bandit.rng attribute was being used
    by random search, which forced random search to affect the search space.
    @willgroves bug report about inconsistent handling of seeds and random
    number generators was the issue that actually kicked off this long-overdue
    piece of work.

* Removes BanditAlgo class entirely:
    The newer approach of "rand.suggest" and "tpe.suggest" has proven to be
    a much cleaner and effective approach, BanditAlgo is just in the way now,
    and since the tests were written originally to use BanditAlgo, it
    introduced a number of differences between what was tested and how user
    code is usually written.

* Removes Experiment class entirely:
    The newer approach of using "fmin" has proven to be much cleaner and
    clearer than using the older Experiment class. Experiment was never widely
    used I think, and hasn't been in the documentation for a year or more.

* Removes the mongo-search CLI:
    There used to be a command-line program hyperopt-mongo-search but it has
    been gone for a while. I removed the support code for that script from
    mongoexp.py, and removed the tests of that support code.

* Saner requirements on dictionaries returned by eval_fn:
    Domain.evaluate now requires a status key from all returned dictionaries,
    it no longer defaults to 'ok'.  The loss is only checked if status ==
    'ok'.  That's the behaviour that was documented, and it seems more
    reasonable then it what it used to be doing.

* Misc more minor improvements:
    * Several files are flake8-compliant
    * unused imports removed
    * better docstrings in a few places
    * Domain has moved from fmin to base