Fixed in 'dot_product' the wrong calculation of the lenght of the arrays.

The arrays were actually passed as pointers so I removed the call of sizeof() from the pointers and changed the prototype of the function to include an argument 'len' which is passed to dot_product
Changes mostly to ann.c to get the perceptron algorithm running with a mock input of a NAND operation. The perceptron successfully learned the NAND operations