Refactored ndim and outdim

The variable names `ndim` and `outdim` are very misleading in the `Models` class. 
They do not describe the dimensionality of input and output, but describe the number of variables in and out of a model. I have for now renamed them to `number_input_variables` and `number_output_variables` (but am happy for other suggestions). 

To illustrate my point:

```python
In [31]: mylittlepoly = models.builtin_models.Poly1DModel(5)

In [32]: myinputdata = np.random.random((100, 100, 100))

#myinputdata.ndim == 3

In [33]: mylittlepoly(myinputdata)

...
```

**Do not merge** as only a small part of the code has been refactored.