Slight improvements to model string formatting

This deduplicates a lot of `__repr__` and `__str__` code for Model
and its subclasses, so there is more consistency between different
Model classes in what their `__repr__` and `__str__` output.
Also made some slight improvements to the previous output formats.
I still don't claim this to be perfect, but it's a step in a better
direction.  In particular I think displaying the different parameter
sets as a table is nice.

These changes are a prerequisite to another, potentially more
interesting change.

Here's a few samples.  I'm open to suggestions for improvements that I can make quickly--currently the formatting is based on the formatting that was already in use, but is just a bit more streamlined:

```python
In [2]: g = Gaussian1D(amplitude=1, mean=0, stddev=0.1)

In [3]: g
Out[3]: <Gaussian1D(amplitude=1.0, mean=0.0, stddev=0.1)>

In [4]: print g
Model: Gaussian1D
Inputs: 1
Outputs: 1
Parameter sets: 1
Parameters:
    amplitude mean stddev
    --------- ---- ------
          1.0  0.0    0.1
```

```python
In [6]: g2 = Gaussian1D(amplitude=[1, 2], mean=[0, 0], stddev=[0.1, 0.2])

In [7]: g2
Out[7]: <Gaussian1D(amplitude=[ 1., 2.], mean=[ 0., 0.], stddev=[ 0.1, 0.2], param_dim=2)>

In [8]: print g2
Model: Gaussian1D
Inputs: 1
Outputs: 1
Parameter sets: 2
Parameters:
    amplitude mean stddev
    --------- ---- ------
          1.0  0.0    0.1
          2.0  0.0    0.2
```

```python
In [10]: a = AffineTransformation2D(matrix=[[2, 0], [0, 2]], translation=[1, 0])

In [11]: a
Out[11]: <AffineTransformation2D(matrix=[[ 2., 0.], [ 0., 2.]], translation=[ 1., 0.])>

In [12]: print a
Model: AffineTransformation2D
Inputs: 2
Outputs: 2
Parameter sets: 1
Parameters:
    matrix [2,2] translation [2]
    ------------ ---------------
      2.0 .. 2.0      1.0 .. 0.0
```

```python
In [15]: p = Polynomial1D(3, c0=1, c1=2, c2=3, c3=4)

In [16]: p
Out[16]: <Polynomial1D(3, c0=1.0, c1=2.0, c2=3.0, c3=4.0)>

In [17]: print p
Model: Polynomial1D
Inputs: 1
Outputs: 1
Parameter sets: 1
Degree: 3
Parameters:
     c0  c1  c2  c3
    --- --- --- ---
    1.0 2.0 3.0 4.0
```