Fix the issue #3745, the code book generation for OutputCodeClassifier

+ Change the process of generating output code for OutputCodeClassifier. The process is to draw subsets of the exhaustive code book, see [1], multiple times and pick the one that give largest hamming distances between classes.
+ Change the default value of code_size from 1.5 to 1. 1.5 is problematic. For example when n_classes = 3, the size of exhaustive code book is 3, so 1.5 for code_size is not possible.
+ Add test case.
+ Update the document.

[1] Thomas G. Dietterich, Ghulum Bakiri. Solving Multiclass Learning Problems via Error-Correcting Output Codes
This algorithm is similar to the dense random in that paper. However, the way they generate code book for each iteration is the old implementation in this project, which I believe is problematic. So I change to the current implementation.

I totally understand your point that only well-established algorithm could be merged in the project. My point is the original implementation here is a kind of heuristic (obviously not "well-established"), that's why I want to improve it. More important, as I understand, the paper by Dietterich et. al was to propose the general idea of error correcting output coding for multi-class problem, and they provided the design principle for ECOC, i.e. the row-separation and column separation. My implementation is kind of stupid way to optimize the row-separation, by repeatedly sampling the valid code books and choose the "best" one. Maybe I can maximize the column separation as well.