Generic traits to allow easy plugging of different numerical integration algorithms, and wrappers for the Cuba and GSL integrators.

```
1. 1.1.1.
I will add wrappers for more functions as I go.
Cuba is a suite of advanced multidimensional numerical integration algorithms, including both Monte Carlo and deterministic
methods. See its documentation [here](http://www.feynarts.de/cuba) for details and installation instructions.
If you do not wish to use these wrappers, you can disable them by disabling the `cuba` feature.
Cuba has four algorithms: Vegas, Suave, Cuhre, and Divonne. Currently, wrappers are only implemented for the first three; the last
has a number of extra arguments for finding singularities which I have not addressed yet.
This example will integrate a Gaussian over a given range with a GSL integrator. In reality, of course, you should probably find an `erf()` implementation to call instead, but this illustrates its use.
```rust
extern crate integrators;
use integrators::{Integrator, Real};
fn integrate_gaussian(from: f64, to: f64, sigma: f64, mean: f64) -> f64 {
}
fn main() {
}
```
A Rust crate which provides a generic interface for numerical integrators. It includes implementations of this interface for integrators from the GSL and Cuba libraries.
On Ubuntu-based systems, these wrappers should work with `libgsl-dev`. If you do not wish to use these wrappers, you can disable them by disabling the `gsl` feature.
These algorithms can only integrate one dimensional integrals.
See the GSL docs [here](https://www.gnu.org/software/gsl/doc/html/integration.html#) for a complete list of integration algorithms. Currently, only four wrappers
are implemented:
```