Reduced duplication.
Moving to another rank test.
More complex knight movement implementation. However it's still not comprehensive.
Extracted knight moves detector to a separate method.