adding last_job_timeout to FakeOptions for testing mongoexp
new: graphviz submodule for visualizing hyperparam dependencies
docs for dot_hyperparameters
new: anneal.py

New algorithm for optimization by annealing is non-trivial, but still simple
enough to document how to write an optimization algorithm.
anneal.py: raise NotImplemented for unsupported hp types
capitalized classnames in anneal.py
moved many_dists from test_tpe to bandits
anneal: adding support for all distributions
anneal.py up and running
downgrading logger info output to debug
docs and warning in anneal.py
anneal algo tentatively... done?
Fix stale README.
Merge pull request #152 from dwf/readme_updates

Fix stale README.
fixes to anneal.py
fixed rseed parameter passing from fmin to algo.suggest, seed/rseed parameter added anneal code
Cut BanditAlgo, Experiment; change RNG handling

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
s/"ok"/STATUS_OK
init fmin rstate with RandomState()
commenting debugs, cutting old comment