Implement non-blocked sampling for array based samplers.

Before, all our samplers operated in the joint space (i.e. blocked) by default. This often leads to bad convergence for metropolis or slice.

This adds functionality to set `blocked=False` when instantiating any sampler which will instead create a step-method for each RV and append them to a `CompoundStep`.

Samplers like metropolis and slice default to not being blocked (as was the case in pymc2 and is what people assume). HMC and NUTS however default to being blocked as they are specifically designed to operate in the joint space.

Unfortunately because of all the configurations `ArrayStep` could be called there's quite some code to determine the configuration it was called in but it's fully backwards compatible that way.

This supersedes https://github.com/pymc-devs/pymc/pull/450 which took a different approach.
I agree that it's adding quite a bit of complexity. The other alternative I saw was https://github.com/pymc-devs/pymc/pull/450 and having separate classes. Having a special `elemwise_sampler` function seems similar.

I reconsidered this approach though as I think the interface and UX is more important than the implementation.

I also trie to have the element wise iteration over dimensions/RVs be done inside of `sample()` but it e.g. didn't work with `Metropolis` because `scaling` was still the original/blocked dimensionality.

I'm not sure what other way there is without a large refactoring to have a simple `blocked=False` kwarg.