Clean up a few cosmetic inconsistencies

Converted some spaces to tabs, removed unnecessary
whitespace, and made some small changes to make the
code more consistent.  Purely cosmetic.
Add copyToSquare method

Makes a copy of a matrix, padding it so that it
becomes square.
Implement rectangular array support

Made the necessary changes to support rectangular arrays.
This changes the fact that the assignment array may not have
a pair for each row (if there are more rows than columns).
Also, I matched my style to existing code and fixed a few other
minor inconsistencies.
Add main method with test cases, update documentation