Dollar strings with many decimal places

The current version fails on dollar strings with more than two decimal places. This may be by design (_eg_, you only use this on dollar strings when you are being very particular about their format), but I think it could lead to confusing situations since it accepts __any__ number. Meaning 3.141 would be accepted, "3.141" would be accepted, but "$3.141" would be rejected. This doesn't seem quite right to me.

A common scenario where you find this level of precision is gas prices (today's national average is $3.513, I paid $3.759 this morning).

Allowing such precision required/allowed the removal of the special-casing of "$0.00"  (would formerly reject "$0.001" but accept "0.001" and 0.001, the same strange behavior as above). Again, if this is expected behavior, feel free to ignore this PR.