Start product functional test

Mainly I start implementing the product functional test.  During the
test I also fix some bugs:

- rounding numbers method Number.round() in core.coffee does not work
  for digit 5; for example, 2.495 is rounded to 2.49 instead of 2.50. I
  fix this bug by using Math.round() and Math.pow() instead of
  Number.toFixed() and parseFloat().
- method String.parseNumber() in core.coffee does not recognize empty
  strings correctly because this !== "" if this is a String object and
  its internal value is an empty string.
- the SalesItem class does not correctly validate the underlying
  SalesItemPricing object in property pricing.  I fix this by adding a
  user-defined validator.
- I add additional validations to SalesItem, SalesItemPricing, and
  SalesItemPricingItem by implementing user-defined validators.  For
  this reason, the validation code in SalesItemService is no longer
  necessary.
- the ID of the step3-quantity field is not reproduced in HTML code
  because the _input.gsp template does not respect any given id
  attribute
- I improve the display of input error message all over the
  salesItemPricingForm.gsp file
- I remove the redundant form error message for salesItem.pricing.  Now
  at most one such form error message is displayed.

Furthermore, I convert sales-item-pricing.js to CoffeeScript.