Symmetric diffeomorphic non-linear registration

This pull request addresses the major pending issues from #346, especially the cython test coverage and the DiffeomorphicMap refactor to make the implementation more clear (the 'forward - backward' naming issue).