Separation of autodiff and MCMC specific code

This big commit is meant to to disentangle the autodiff functionnality from the MCMC functions. It creates an `Autodiff` module (fully contained in the `src/autodiff` folder) that is used by the MCMC module as a submodule. But it can now as well be used in another context. It comes with basic derivation rules (+, -, etc..) and can be "taught" new rules. 
For the needs of MCMC, new rules are for logpdf(Distributions, x), etc... You can get a feel of what it looks like in `src/modellers/definitions/MCMCDerivRules.jl` for example.

There are other improvements such as a better management of composite types, a cleaner syntax for derivation rules declarations, and some optimizations of generated code (but a lot more is possible in that area).

Externaly, the package behaves the same, the syntax is unchanged. I have added the Laplace distribution and an experimental management of right-left censoring of data using the `~+` and `~-` operators.

Also improved is the derivation testing (see `test/test_diff.jl`).

All tests seem to pass.