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
Add note about modified documentation
Add methods to calculate the assignment and get the sum separately

Functionality and usage of hgAlgorithm remains the same.
Also fixed a typo in the documentation and renamed a variable.
Original tests utilize the new functions, so nothing seems to have
broken.
Use maxWeightPlusOne instead of a fixed forbiddenValue

This way, the value that pads rectangular matrices is chosen
based on the input matrix instead of requiring all input values to
be positive, or all less than -1.  Documentation was updated to
reflect the latest changes as well.