write test cases for compose_rev()
write interface and implementations for compose_rev()
fill out docstring of canonical_rev()

This is to clear up the difference between compose_rev() and canonical_rev().
Merge pull request #56 from OEP/feature/compose-rev

Test cases and implementation for compose_rev() operation