refactor algorithms and selectors

discovered my inverse_cumulative_distribution_function had a bug and
calculated wrong stuff. Fixed the bug and added proper specs for
BiNormalSeperation and InformationGain.
Also refactored selectors, although I have to better name and
distinguished between simple and base selectors.