Image registration

This PR adds support for performing image registration on an `Images` object. It is part of the new `improcessing` package, which is designed for image processing routines that are more complex than the simple filtering operations available directly as methods on an `Images` object. The `Register` class is designed as an abstract method that handles distribution; subclasses, such as the initial example `CrossCorr`, implement methods for estimating and applying transformations. 

Key features
- Simple pattern for adding new registration methods
- Helper method for computing a reference image / volume
- Supports both applying the transformation to the images / volumes, or directly returning the transformation parameters

Based on a prototype developed by @d-v-b

@industrial-sloth take a look and let me know what you think?
Couple minor stylistic things on get_transform and apply_transform:
* I'd prefer to see a NotImplementedError thrown in both instead of just passing. If someone later comes along and adds a new implementation of Register, that would prevent them from needlessly calling an empty abstract implementation. 
* Is the intent of @staticmethod here to declare that all subclass implementations of these methods must/should also be static? That's probably not desirable - imagine a hypothetical ComplicatedRegistrationMethodWithLotsOfParameters, where the parameters are stored as attributes of the instance. And furthermore, as I just myself learned from The Internet (thanks, Internet!), @staticmethod and similar annotations aren't "inherited" in this way in any event: https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods
So here I think I'd prefer to see the abstract get and apply_transform methods be regular instance methods that throw NotImplementedError. The CrossCorr implementations can I think remain as @staticmethods (assuming that does indeed work, as the above linked blog post seems to suggest it will.) 
We might consider at some point using the real abstract base classes mechanisms here (@abc.abstractmethod and such), but as we haven't been using that anywhere else and it's not a huge win, I don't really feel the need to start right now.