Implements `BipartiteGraph.partition`

A naive implementation, generates a 2-coloring.
Extract private method `add_to_set`
Simplify `partition` further by extracting private methods
First (disgusting) draft of `BipartiteGraph.maximum_cardinality_matching`
Second draft of `maximum_cardinality_matching`

With test case for non-trivial graph
Extracts private method `matched?`