Added tests!  And error handling to main calculator.

Created lots of tests for the script, and added handling to ensure the
discount numbers are not less than 0 (since 0 should be a valid discount).