Implement passive_reverser, reverser, internal_passive_reverser, internal_reverser and create appropriate unit tests. Fixes #115