Partly fixed #16: optimized Linear Separator Solver
Partly fixed #16: optimized Linear Separator Solver

Fixed big memory and time consumption:
- added flag `binary` to accept binary vectors. E.g.,
if number of dimensions is 5, `[1, 3, -1]` means `[0, 1, 0, 1, 1]`;
- using `numpy.array` to store and process classes for performance;
- storing classes names in separate dictionary, if needed;
- working with binary vectors fast:
using `plane[vec].sum()` instead of `plane.dot(vec)`,
because vectors in this case represent position of `1` and dot product
by it means just summarizing by corresponding elements.

char-lie/patterns_recognition,char-lie/mfm,char-lie/mfm,char-lie/mfm,char-lie/patterns_recognition