1. IVFPQIndex search speed is greatly improved, now at least 2 times faster than before
2. IVFPQIndex now supports encoding residuals, pass *pq_use_residual=True* to initializer method in order to toggle residual encoding on. this improves recall rate, espcially for low code sizes. You can see the difference between residual encoding on and off from [benchmark results](https://github.com/DeMoriarty/TorchPQ/tree/main/benchmark/turing/sift1m)
3. Added new submodules, such as index, clustering, codec, transform and more
4. old implementations from v0.1 are moved to *torchpq/legacy/*
5. more thorough benchmark results on sift1m dataset