Out of core computation

This PR allows out-of-core computation of both the co-occurrence matrix and word vectors by using memory-mapped numpy arrays.

This should result in memory usage constant in the size of the training corpus, at the cost of a performance penalty related to the amount of memory available and the speed of persistent storage used.

@piskvorky