Min and Max attributes now comparing as numbers rather than as strings

Min and Max values, when defined as attributes, had been interpreted as
strings when comparing.  Thus, setting max="30" would interpret a value
of "100" as valid, because the string "100" comes before the string
"30".  

This update forces min and max attributes to be interpreted as
numbers instead, so an attribute of max="30" would have a validation
failure for an observable that has a numeric value of 100, as it should.

2 Tests are included that fail for the current code but pass when this
patch is applied.