Fix the algorithm to detect homomorphisms.

The logic is explained in the tech report, and sumarized below. If it's hard to understand,
try to compile it in latex.

Each c{i,j} is the result of the equation
$\left(\sum_{1 \le n \le |v_\alpha|} \left(\sum_{1 \le k \le |v_\beta|} m_{in}m_{jk}b_{kn}\right) = 1\right)$
which is equivalent, in logic, to
$c_{ij} = \exists n \exists k ((i,n) \in f \wedge (j,k) \in f \wedge (k,n) \in \beta)$.
In plain english, this condition means that, if there's a mapping from b in beta to a in alpha, then every neighbour of b maps
to one neighbour of a. If this is valid for every connection in alpha, then the mapping is an homomorphism. The extra condition
that there's no b, c in beta mapping to a in alpha is encoded in the condition that no column may have more than one 1.