Reductive has moved to the finalfusion project
Update rand, rand_xorshift, ndarray-linalg dependencies

Since rand 0.7 requires Rust 1.32.0, change CI lower bound 1.31.0 ->
Vendor ndarray-rand

This allows us to move to newer releases of rand without waiting for
ndarray-rand to catch up. We can switch back to upstream ndarray-rand
once it and the rand crate reach version 1.
CI: build on Rust 1.31.0 besides the latest stable builds: run clippy
Fix clippy warnings
Add build file
Fix documentation URL
Add a pub constuctor for PQ and additional getters
Derive Clone on PQ
More verbose error when too many centroids are used
Derive Debug and PartialEq for PQ
Add methods to get quantized/reconstructed length

This change extends QuantizeVector and ReconstructVector with
quantized_len and reconstructed_len methods. These allow you to get the
vector lengths without actually quantizing or reconstructing a vector.
Use PQ struct for all quantizers

Vector quantizers are structurally very similar after training:

- PQ: quantizers
- OPQ: quantizers + projection matrix
- Gaussian OPQ: quantizers + projection matrix

This change makes reductive use the PQ struct for all quantizers. In
order to do so, it now has an optional projection member.

The OPQ/GaussianOPQ structs are now unit structs that are only used to
differentiate their training procedures.
Update Cargo metadata: docs/homepage/repo
Make centroid indices generic

So far, the centroid indices were always usize. However, this is not
convenient when one wants to store in a quantized matrix with a smaller
width integer (e.g. u8). Make the index type generic, so that the user
can decide the index type.
Put OPQ training behind the "train-opq" feature gate

OPQ and Gaussian OPQ training requires LAPACK. This dependency should
not be necessary if one only wants to use a quantizer that was
previously trained. This change puts the training functions of the
OPQs behind a feature gate so that most of the functionality of this
crate can be used without a LAPACK implementation.
Add the TrainPQ trait

This trait specifies standardized training functions for all product
Add Apache 2 license