text: Title: Investigate Bolt to speed up Gensim and save memory
  Body: I found https://github.com/dblalock/bolt: "*Bolt is an algorithm for compressing vectors of real-valued data and running mathematical operations directly on the compressed representations.*"
  
  My understanding is that this saves a tremendous (10-200x) amount of space AND time, in case a static (fixed) dense matrix is being repeatedly multiplied by other vectors / matrices:
  
  ```python
  # these are approximately equal (though the latter are shifted and scaled)
  enc = bolt.Encoder(reduction='dot').fit(X)
  [np.dot(X, q) for q in queries]
  [enc.transform(q) for q in queries]
  ```
  
  The cost of this fabulous speedup & space saving is (some) loss of precision – unclear how much.
  
  This seems perfect for pretty much all trained Gensim models: in particular, KeyedVectors, LsiModel, and the Similarity classes.
  
  **Task**: Investigate Bolt, see how difficult it would be to integrate, how stable, how robust. And how much will Bolt really save Gensim users in practice, in terms of faster query speed and (especially) smaller model memory.