Groundwork for dense correspondence pipeline

This PR contains general improvements and additions to Menpo that are needed for the correspondence pipeline that will be a follow-up PR.

I've decided to split the work as everything presented here is general and useful outside of the scope of the correspondence framework. It should be straightforward to review all this code in isolation and once we are happy it can be brought in.

The correspondence PR actually won't be very large - this really contains the necessary tooling - all the correspondence package will do is string it all together in an easy to use way.


@patricksnape @jalabort I came here in evidence of why `ExtractNDims`/`AppendNDims` are useful, and found I actually didn't use them! Instead I make `rem_z`, a `Homogeneous` that does the same thing as `ExtractNDims(1)`. To be honest this is preferable here as it means all the transforms natively compose into a single homogeneous matrix. Although I have used  `ExtractNDims`/`AppendNDims` in the forthcoming correspondence code, I'm thinking now that maybe we remove those classes and go for this approach instead. It would look something like:

```python
def dims_3to2():
    return Homogeneous(np.array([[1, 0, 0, 0],
                                 [0, 1, 0, 0],
                                 [0, 0, 0, 1]]))

def dims_2to3(x=0):
    return Homogeneous(np.array([[1, 0, 0],
                                 [0, 1, 0],
                                 [0, 0, x],
                                 [0, 0, 1]]))
```

I would remove the other two classes, and just use these functions here (and in the forthcoming correspondence code). These functions could just live in the correspondence package for now, and we can add them to `menpo.transform` as and when if another use case crops up for them down the line. Thoughts?