Add alternative code motion algorithm and tests for it.
Add forgotten files for previous commit.
Data.Map.Strict -> Data.Map
Remove some unused stuff.
Fix `gather` to use `hoistOver` parameter correctly.
Fix the previous fix.
Merge pull request #5 from jankner/1.x

Alternative code motion algorithm and tests for it.