Adding the restricted_injections() function

This is meant to efficiently enumerate the possible conjugators in
InfiniteFactor.

- Moving semi_infinite_end_points() to Automorphism instead of
InfiniteFactor